2022-04-07 字符串-简单-《796. 旋转字符串》

题目:796. 旋转字符串

发现就真的特别有意思的解法,当2个s组装在一起的时候,如果包含了目标字符串,那就肯定能旋转得到。(发现人生也是也,有时候转变个角度,马上就能看到不一样的事情!!!啊,我不要钻牛角尖了!!!)

class Solution {
    public boolean rotateString(String s, String goal) {
        if(s.length() == goal.length() && (s+s).contains(goal)){
            return true;
        }
        return false;
    }
}

或者是:长度一定要相等;

假设 s旋转 i 位,则与 goal 中的某一位字符goal[j] 对应的原 s 中的字符应该为 s[(i+j) \bmod n]。在固定 i的情况下,遍历所有 j,若对应字符都相同,则返回true。否则,继续遍历其他候选的 i。

class Solution {
    public boolean rotateString(String s, String goal) {
        int m = s.length(), n = goal.length();
        if (m != n) {
            return false;
        }
        for (int i = 0; i < n; i++) {
            boolean flag = true;
            for (int j = 0; j < n; j++) {
                if (s.charAt((i + j) % n) != goal.charAt(j)) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                return true;
            }
        }
        return false;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值