码迷,mamicode.com
首页 > 其他好文 > 详细

旋转字符串

时间:2016-03-15 20:44:57      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:

唉,写在开头,字符串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 }

 








旋转字符串

标签:

原文地址:http://www.cnblogs.com/jeyfang/p/5280836.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!