旋转字符串

题目描述:

如果一个字符串123456,存在一些旋转字符串:
比如:

  • 234561
  • 345612
  • 456123
  • 561234
  • 612345
    那么如果给你两个字符串,如何判断它们存在这种关系?

解法1:

使用两层for循环遍历:

public  static  boolean findStr1(String s1,String s2){

        if(s1.length()!=s2.length()){
            return false;
        }

        char[] chars1 = s1.toCharArray();
        char[] chars2 = s2.toCharArray();

        for(int i=0;i<s1.length();i++){
            int temp=i;//为内层循环提供初始位置
            int count=0;//计数使用

            for(int j=0;j<s2.length();j++){

                //如果到末尾则从头开始
                if(temp==s1.length()){
                    temp=0;
                }

                if(chars1[temp]==chars2[j]){
                    temp++;
                    count++;
                    continue;
                }else {
                    break;
                }
            }

            //如果相同字符的数量和s1的长度一致代表找到了
            if(count==s1.length()){
                return true;
            }

        }

解法2:

将字符串拼接判断子串:

public static boolean findStr2(String str1,String str2){

        //先判断长度是否相同
        if(str1.length()!=str2.length()){
            return false;
        }

        //拼接两个字符串
        String str3=str1+str1;

        //使用String的contains判断是否是str3的子串
        if(str3.contains(str2)){
            return  true;
        }

        return false;
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值