剑指Offer学习 —— 字符串替换和翻转

替换空格

class Solution {
        /*
         *
         * 题目:请实现一个函数,把字符串 s 中的每个空格替换成"%20"
         *
         * 思路1:递归:替换字符串中的字符,从前到后找到第一个目标字符,对后面剩余字符重新执行搜索。
         * 思路2:字符串拆分为字符数字,复制到另一个长度为2倍的数组里,遇到空格替换。
         *
         * 知识点:s.substring(int beginIndex , int endIndex)
         *        beginIndex 是指子串开始位置,从 0 开始
         *        endIndex 是指字串结束位置,最大值为 s.length
         *        字串的数学区间为 [beginIndex,endIndex)
         *
         * */
        public String replaceSpace1(String s) {
            if (s.length() == 0) {
                return "";
            }
            int index = 0;
            while (index < s.length()) {
                if (s.charAt(index) == ' ') {
                    return s.substring(0, index) + "%20" + replaceSpace1(s.substring(index + 1));
                }
                index++;
            }
            return s;
        }

        public String replaceSpace2(String s) {
            char[] chars = new char[s.length() * 3];
            int index = 0;
            for (char c : s.toCharArray()) {
                if (c == ' ') {
                    chars[index++] = '%';
                    chars[index++] = '2';
                    chars[index++] = '0';
                } else {
                    chars[index++] = c;
                }
            }
            return String.valueOf(chars,0,index);
        }


    }

左旋转字符串

class Solution {
        /*
         *
         * 题目:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。
         *      请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
         *
         * 思路:子串拼接
         *
         * */
        public String reverseLeftWords(String s, int n) {
            return s.substring(n) + s.substring(0, n);
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值