旋转字符串

Posted I can do this all day

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了旋转字符串相关的知识,希望对你有一定的参考价值。

唉,写在开头,字符串String的几个方法总是弄混淆。

String.copyValueOf(char[] data),用来返回字符串,即数组转化为字符串对象。

String.charAt(int index) ,此方法返回指定索引处的char值.

String.indexOf(int ch) ,此方法返回在此字符串中第一次出现的指定字符索引

String.valueOf(object a),根据a的类型返回该类型的参数

。。。。。

  如果对于一个字符串A,将A的前面任意一部分挪到后边去形成的字符串称为A的旋转词。比如A="12345",A的旋转词有"12345","23451","34512","45123"和"51234"。对于两个字符串A和B,请判断A和B是否互为旋转词。

  给定两个字符串AB及他们的长度lenalenb,请返回一个bool值,代表他们是否互为旋转词。

测试样例:
"cdab",4,"abcd",4
返回:true

  之前的想法是,两个字符串自身分别相向挪动,比如有两个字符串,abcd和cdab,然后各自分别挪动,变为bcda和bcda,然后比较两者是否相等,但是有考虑到特殊情况,
比如双方只有两个字符,则分别挪动则会判断出错,因此次方法不适用。因此采用只有一个字符串挪动。接下来就是挪动的方式选择,之前想到一个字符串的第一位要移动到最后一位,
想利用队列实现,可是发觉这样比较两个字符串是否相等又有问题,因此队列的方式不适用。最后就选择直接用字符串拼接的方式。
代码:


 1 import java.util.*;
 2 
 3 public class test {
 4     public static boolean chkRotation(String A, int lena, String B, int lenb) {
 5         // write code here
 6         int i;
 7         if(lena!=lenb){    //首先长度判断
 8             return false;
 9         }
10         else{
11             int flag=CheckSingle(A,B);    //第一次不挪位直接比较看是否相等
12             String temp = null;
13             if(flag!=1){
14                 temp=A.substring(0, lena);  //想不到好的方式把A的字符串复制给另一个字符串,就用了subsring()
15                 for(i=1;i<lena;i++){
16                     temp=temp.substring(1, lena)+temp.substring(0,1);    //字符串拼接,上一次temp字符串的后lena-1位拼接上temp的第一位,即完成了挪位
17                     if(CheckSingle(temp,B)==1){
18                         return true;
19                     }    
20                 }
21                 return false;
22             }
23             else return true;
24         }
25     }
26         
27     public static int CheckSingle(String A,String B){
28         if(A.equals(B)){
29             return 1;
30         }
31         else return 0;
32     }
33     public static void main(String[] args){
34         if(chkRotation("dbc",3,"bcd",3))
35             System.out.println("yes");
36         else System.out.println("no");
37     }
38 }

 








以上是关于旋转字符串的主要内容,如果未能解决你的问题,请参考以下文章

Butterknife 片段旋转给出 NullPointer

如何在没有活动旋转的情况下旋转活动内的片段?

旋转后片段字段为空

使用导航抽屉旋转时的片段更改

在我旋转屏幕之前,LiveData 不会加载到片段中

屏幕旋转后Android片段重叠