代码随想录算法训练营Day08

字符串

反转字符串

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--;  
        }  
    }  
}

替换数字

  1. 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();  
}
  1. 数组
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);  
    }  
}
posted @ 2025-04-02 16:19  Anson_502  阅读(19)  评论(0)    收藏  举报