Prefix Sum IX
You are given a string s
consisting of lowercase English letters.
The score of a string is the sum of the positions of its characters in the alphabet, where 'a' = 1
, 'b' = 2
, ..., 'z' = 26
.
Determine whether there exists an index i
such that the string can be split into two non-empty s[0..i]
and s[(i + 1)..(n - 1)]
that have equal scores.
Return true
if such a split exists, otherwise return false
.
Example 1:
Input: s = "adcb"
Output: true
Explanation:
Split at index i = 1
:
- Left substring =
s[0..1] = "ad"
withscore = 1 + 4 = 5
- Right substring =
s[2..3] = "cb"
withscore = 3 + 2 = 5
Both substrings have equal scores, so the output is true
.
Example 2:
Input: s = "bace"
Output: false
Explanation:
No split produces equal scores, so the output is false
.
Constraints:
2 <= s.length <= 100
s
consists of lowercase English letters.
public bool ScoreBalance(string s) { int[] prefixSum = new int[s.Length]; prefixSum[0] = (int)(s[0] - 'a' + 1); for (int i = 1; i < s.Length; i++) prefixSum[i] = prefixSum[i - 1] + (int)(s[i] - 'a' + 1); for (int i = 0; i < s.Length - 1; i++) if (2 * prefixSum[i] == prefixSum[s.Length - 1]) return true; return false; }
Comments
Post a Comment