字符串
反转字符串
class Solution {
public void reverseString(char[] s) {
int left = 0;
int right = s.length-1;
while(left<=right){
char temp = s[left];
s[left] = s[right];
s[right] = temp;
left++;
right--;
}
}
}
反转字符串2
//给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
//如果剩余字符少于 k 个,则将剩余字符全部反转。
//如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
class Solution {
public String reverseStr(String s, int k) {
char[] sChar = s.toCharArray();
for(int i = 0;i<sChar.length;i+=2*k){//这里的i表示要反转字符串的开始位置
//下面的条件判断要判断剩余字符了
//下面的代码才是正确的,i + k - 1 表示反转区间的结束索引,sChar.length - 1 是字符数组的最后一个索引,如果剩余的字符不足 k 个,那么直接使用剩余字符作为反转范围即可。这段代码通过取较小值来动态调整反转的结束位置,避免超出数组边界。
int end = Math.min(i + k - 1, sChar.length - 1);
reverseString(sChar, i, end);
}
return new String(sChar);
}
public void reverseString(char[] s,int start,int end){
while(start<=end){
char temp = s[start];
s[start] = s[end];
s[end] = temp;
start++;
end--;
}
}
}
替换数字
- StringBulider
public static String replaceNumber(String s) {
StringBuilder sb = new StringBuilder();
for (char c : s.toCharArray()) {
if (c >= '0' && c <= '9') {
sb.append("number");
} else {
sb.append(c);
}
}
return sb.toString();
}
- 数组
class Solution {
public static void main(String[] args) {
String s = "a123bcd4 5";
System.out.println(replaceNumber(s));
}
public static String replaceNumber(String s) {
int cnt = 0;
char[] chars = s.toCharArray();
for(int i = 0;i<chars.length;i++){
if(chars[i]<'9'&&chars[i]>'0'){
cnt++;
}
}
char[] newChars = new char[chars.length+cnt*5];
cnt = 0;
for(int i = 0;i<chars.length;i++){
if(chars[i]<'9'&&chars[i]>'0'){
newChars[cnt++] = 'n';
newChars[cnt++] = 'u';
newChars[cnt++] = 'm';
newChars[cnt++] = 'b';
newChars[cnt++] = 'e';
newChars[cnt++] = 'r';
}else{
newChars[cnt++] = chars[i];
}
}
return new String(newChars);
}
}