代码随想录 第八天 | 344.反转字符串 ● 541. 反转字符串II ● 卡码网:54.替换数字 ● 151.翻转字符串里的单词 ● 卡码网:55.右旋转字符串 . (151 55 放弃 可能要用c++)

LeetCode:344. 反转字符串 - 力扣(LeetCode)

思路: 双指针的想法用while循环遍历两侧指针,效率高

class Solution {
    public void reverseString(char[] s) {
        int i = 0,j = s.length - 1;
        while(i < j){
            char temp;
            temp = s[j];
            s[j] = s[i];
            s[i] = temp;
            i++;
            j--;
    }
}
}

LeetCode:541. 反转字符串 II - 力扣(LeetCode)

思路:一般来说可能要用i++,但这道题可以直接2k走,判断到剩余字符串长度不满足2k走两个题目上的条件。

可笑的是,第一步,第二步可以用一行代码解决,好离谱。。。

 等同

啊!

还有一个min的更看不懂了

 一行就搞完了.....

class Solution {
    public String reverseStr(String s, int k) {
        char[] charArray = s.toCharArray();
        int start = 0;
        for(int i = start; i < charArray.length; i += 2 * k){
            //先按2k走,i + k 超出看剩余
            if (i + k <= charArray.length) {
                reverse(charArray,i,i + k - 1);
                continue;
            }

            //第一步:剩余字符大于k,小于2k,反转前k个
            if( charArray.length - i >= k && charArray.length - i < 2 * k){
                reverse(charArray,i,i + k -1);
            }
            //第二步: 剩余少于k,全部翻转
            if( charArray.length - i< k ){
                reverse(charArray,i,charArray.length - 1);
            }

        }
        return new String(charArray);
    }
//反转
    public void reverse(char[] s, int i, int i1) {
        for(;i < i1;i++,i1--){
            char temp = s[i];
            s[i] = s[i1];
            s[i1] = temp;
        }

    }
}

卡码网:题目页面 (kamacoder.com)

思路:直接append替换就好。

//Character.isDigit(s.charAt(i)) 是一个更简洁的方式来检查字符串中的字符是否为数字

//charAt 方法来遍历字符串中的每个字符,判断是否为数字,然后进行替换。

//append 方法实际上是用于在字符串构建器(StringBuilder)的末尾添加字符或字符串,其实就是替换。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
                    Scanner sc = new Scanner(System.in);
                    String c = sc.nextLine();
                    StringBuilder sb = new StringBuilder();

                    for(int i = 0; i < c.length(); i++){
                        if(c.charAt(i) >= '0' && c.charAt(i) <= '9' ){
                            //替换
                            sb.append("number");
                        }
                        else
                            sb.append(c.charAt(i));
                }
                String res = sb.toString();
                    System.out.print(res);

        }

    }

 

posted @ 2024-02-29 21:15  22软工冷薄  阅读(8)  评论(0编辑  收藏  举报