代码随想录算法训练营第8天 | 复习字符串API、双指针

2024年7月10日

题344. 翻转字符数组
记得用双指针,时间复杂度最低。

题541. 反转字符串II
首先自己实现一个String的reverse函数方便后面用,记得字符数组和字符串的互转方式。
然后计算有多少组2k,分组处理即可。

class Solution {
    public String reverseStr(String s, int k) {

        //计算有几组2K
        int len = s.length();
        int time = len/(2*k);
        int left = len%(2*k);//最后一组
        for(int i=0;i<time;i++){
            //区间就是substring(i,i+k);
            String xx = s.substring(i*2*k,i*2*k+k);
            xx = reverse(xx);
            s = s.substring(0,i*2*k)+xx+s.substring(i*2*k+k,len);
        }
        //最后一个区间
        if(left<k){
            s = s.substring(0,time*2*k)+reverse(s.substring(time*2*k,len));
        }else{
            s = s.substring(0,time*2*k)+reverse(s.substring(time*2*k,time*2*k+k))+s.substring(time*2*k+k,len);
        }
        return s;
    }

    public String reverse(String s){
        int i=0;
        int j=s.length()-1;
        char[] x = s.toCharArray();
        while(i<=j){
            char t = x[i];
            x[i] = x[j];
            x[j] = t;
            i+=1;
            j-=1;
        }
        return new String(x);
    }
}

卡码网:题54. 替换数字
这题熟练使用String的相关切分API即可。暂时先不考虑双指针优化。

posted @ 2024-07-10 11:07  hailicy  阅读(3)  评论(0编辑  收藏  举报