186. Reverse Words in a String II
先反转整个字符串,再反转每个单词(调整顺序也可以)
反转单词的时候:当 j 指到最后一个字符的时候,或者 j 的下一个指向空格,则反转该单词。
class Solution { public void reverseWords(char[] s) { if(s == null || s.length == 0){ return; } reverse(s, 0, s.length - 1); int i = 0, j = 0; while(j < s.length){ if(j == s.length - 1 || s[j + 1] == ' '){ reverse(s, i, j); i = j + 2; } j++; } } void reverse(char[] str, int i, int j){ while(i < j){ char c = str[i]; str[i++] = str[j]; str[j--] = c; } } }
293. Flip Game
把两个连续的++变为--,遍历所有情况即可。当 i 和 i - 1都为 +时,添加 -。
class Solution { public List<String> generatePossibleNextMoves(String s) { List<String> list = new ArrayList<String>(); for(int i = 1; i < s.length(); i++){ if(s.charAt(i - 1) == '+' && s.charAt(i) == '+'){ list.add(s.substring(0, i - 1) + "--" + s.substring(i + 1, s.length())); } } return list; } }