344. 反转字符串
头尾指针前后交换
class Solution {
public void reverseString(char[] s) {
int left = 0;
for(int right = s.length - 1; right > left; right--){
s[left] ^= s[right];
s[right] ^= s[left];
s[left] ^= s[right];
left++;
}
}
}
———————————————————————————————————————————
541. 反转字符串 II
对每k个字符依次反转,之后向后移动2k个位置。
class Solution {
public String reverseStr(String s, int k) {
char[] chars = s.toCharArray();
int start = 0;
while(start < chars.length){
if(start + k > chars.length){
reverseK(chars, start, chars.length);
}else{
reverseK(chars, start, start + k);
}
start += 2 * k;
}
return new String(chars);
}
void reverseK(char[] s, int start, int end){//左闭右开
for(int i = start; i < (end + start) / 2; i++){
s[i] ^= s[end + start - 1 - i];
s[end + start - 1 - i] ^= s[i];
s[i] ^= s[end + start - 1 - i];
}
}
}
———————————————————————————————————————————
卡码网54. 替换数字
使用StringBuilder组成字符串
import java.util.Scanner;
import java.lang.StringBuilder;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String s = sc.next();
StringBuilder sb = new StringBuilder();
char[] chars = s.toCharArray();
for(char c : chars){
if(c <= '9' && c >= '0'){
sb.append("number");
}else{
sb.append(c);
}
}
System.out.println(sb.toString());
}
}