反转字符串
class Solution {
public void reverseString(char[] s) {
if(s == null || s.length == 0) {
return ;
}
int i = 0, j = s.length - 1;
while(i < j) {
char tmp = s[i];
s[i] = s[j];
s[j] = tmp;
i++;
j--;
}
return ;
}
}
反转字符串II(反转k个)
https://leetcode-cn.com/problems/reverse-string-ii/
class Solution {
public String reverseStr(String s, int k) {
char[] a = s.toCharArray();
for (int start = 0; start < a.length; start += 2 * k) {
int i = start, j = Math.min(start + k - 1, a.length - 1);
while (i < j) {
char tmp = a[i];
a[i++] = a[j];
a[j--] = tmp;
}
}
return new String(a);
}
}
仅仅反转字母
https://leetcode-cn.com/problems/reverse-only-letters/
class Solution {
public String reverseOnlyLetters(String S) {
StringBuilder ret = new StringBuilder();
int j = S.length() - 1;
for (int i = 0; i < S.length(); ++i) {
if (Character.isLetter(S.charAt(i))) {
while (!Character.isLetter(S.charAt(j)))
j--;
ret.append(S.charAt(j--));
} else {
ret.append(S.charAt(i));
}
}
return ret.toString();
}
}
反转单词(顺序改变)
https://leetcode-cn.com/problems/fan-zhuan-dan-ci-shun-xu-lcof/
class Solution {
public String reverseWords(String s) {
int j = s.length() - 1, i = j;
StringBuffer ret = new StringBuffer();
while(i >= 0) {
while(i >= 0 && s.charAt(i) != ' ') {
i--;
}
ret.append(s.substring(i + 1, j + 1) + " ");
while(i >= 0 && s.charAt(i) == ' ') {
i--;
}
j = i;
}
return ret.toString().trim();
}
}
反转单词(顺序不变)
https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/
class Solution {
public String reverseWords(String s) {
String[] strs = s.split(" ");
StringBuffer ret = new StringBuffer();
for (int i = 0; i < strs.length; i++) {
ret.append(new StringBuffer(strs[i]).reverse().toString());
ret.append(" ");
}
return ret.toString().trim();
}
}