[Leetcode每日一题]796. 旋转字符串

该博客探讨了一种字符串旋转匹配问题的解决方案,通过检查给定的两个字符串在进行一定次数的旋转操作后是否能相互转换。提供的Java代码实现中,首先判断字符串长度,然后检查目标字符串是否为原始字符串自身旋转后的子串。这种方法有效地解决了题目所给的示例问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:

给定两个字符串, s 和 goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true 。
s 的 旋转操作 就是将 s 最左边的字符移动到最右边。
例如, 若 s = ‘abcde’,在旋转一次之后结果就是’bcdea’ 。

示例 1:
输入: s = “abcde”, goal = “cdeab”
输出: true

示例 2:
输入: s = “abcde”, goal = “abced”
输出: false

提示:
1 <= s.length, goal.length <= 100
s 和 goal 由小写英文字母组成

代码:

package dayLeetCode;

import com.sun.deploy.util.StringUtils;

public class dayleetcode796 {
    public boolean rotateString(String s, String goal) {
        boolean ansflag = false;
        // 如果两个字符串的长度不相等 则一定为false
        if (s.length() != goal.length()){
            return false;
        }
        // 最坏的情况无非就是将s中的每一位都移动一下,即又变成了s,所以移动成为的字符串的可能都包含在s+s的长度为s.length的子串中
        // 因此只需要判断goal是不是s+s的子串即可
        String tmpStr = s + s;

        ansflag = tmpStr.contains(goal);

        return ansflag;
    }

    public static void main(String[] args) {
        dayleetcode796 dayleetcode796 = new dayleetcode796();
        System.out.println(dayleetcode796.rotateString("abcde", "cdeab"));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值