麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

java之左旋轉字符串介紹

2019-11-26 16:15:11
字體:
來源:轉載
供稿:網友

題目:定義字符串的左旋轉操作:把字符串前面的若干個字符移動到字符串的尾部。如把字符串abcdef左旋轉2位得到字符串cdefab。請實現字符串左旋轉的函數。要求時間對長度為n的字符串操作的復雜度為O(n),輔助內存為O(1)。

分析:如果不考慮時間和空間復雜度的限制,最簡單的方法莫過于把這道題看成是把字符串分成前后兩部分,通過旋轉操作把這兩個部分交換位置。于是我們可以新開辟一塊長度為n+1的輔助空間,把原字符串后半部分拷貝到新空間的前半部分,在把原字符串的前半部分拷貝到新空間的后半部分。不難看出,這種思路的時間復雜度是O(n),需要的輔助空間也是O(n)。

接下來的一種思路可能要稍微麻煩一點。我們假設把字符串左旋轉m位。于是我們先把第0個字符保存起來,把第m個字符放到第0個的位置,在把第2m個字符放到第m個的位置…依次類推,一直移動到最后一個可以移動字符,最后在把原來的第0個字符放到剛才移動的位置上。接著把第1個字符保存起來,把第m+1個元素移動到第1個位置…重復前面處理第0個字符的步驟,直到處理完前面的m個字符。

該思路還是比較容易理解,但當字符串的長度n不是m的整數倍的時候,寫程序會有些麻煩,感興趣的朋友可以自己試一下。由于下面還要介紹更好的方法,這種思路的代碼我就不提供了。

我們還是把字符串看成有兩段組成的,記位XY。左旋轉相當于要把字符串XY變成YX。我們先在字符串上定義一種翻轉的操作,就是翻轉字符串中字符的先后順序。把X翻轉后記為XT。顯然有(XT)T=X。

我們首先對X和Y兩段分別進行翻轉操作,這樣就能得到XTYT。接著再對XTYT進行翻轉操作,得到(XTYT)T=(YT)T(XT)T=YX。正好是我們期待的結果。

分析到這里我們再回到原來的題目。我們要做的僅僅是把字符串分成兩段,第一段為前面m個字符,其余的字符分到第二段。再定義一個翻轉字符串的函數,按照前面的步驟翻轉三次就行了。時間復雜度和空間復雜度都合乎要求。

復制代碼 代碼如下:

public class Test_21 {
 public static void main(String[] args){
  StringBuilder str = new StringBuilder("abcde");
  int index =5;
  System.out.println(LeftTurn(str,index));
 }
 public static String LeftTurn(StringBuilder sb,int index){
  int strlen = sb.length();
  if(sb !=null&&index>=0&&index<=strlen){
   int firststart = 0;
   int firstend = index-1;
   int secondfirst = index;
   int secondend = strlen-1;

   

    
    ReverseString(sb,firststart,firstend);
    ReverseString(sb,secondfirst, secondend);
    ReverseString(sb,firststart,secondend);

   
   return sb.toString();
  }
  return null;

 }
 public static void ReverseString(StringBuilder str,int begin, int end){

  while(begin<=end){
   char temp = str.charAt(begin);
   str.setCharAt(begin, str.charAt(end));
   str.setCharAt(end, temp);
   begin++;
   end--;
  }
  System.out.println(str);
 }

}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 免费午夜网站 | 手机在线看片国产 | 日本在线视频一区二区三区 | 蜜桃91丨九色丨蝌蚪91桃色 | 国产免费让你躁在线视频 | 成人在线精品视频 | 久久久三级免费电影 | 免费在线观看一级片 | 国产一精品久久99无吗一高潮 | 久久久久久久久日本理论电影 | 黄网站色成年大片免费高 | 成av在线| 国产午夜亚洲精品午夜鲁丝片 | 私库av在线免费观看 | 高潮娇喘嗯啊~文字 | 欧美日韩在线视频一区 | 国产精品久久久久久久久久久久午夜 | 精品一区二区三区在线观看视频 | 日韩毛片网| 青草av.久久免费一区 | 精品久久久久久久久久久aⅴ | 亚洲网站一区 | av色先锋 | 亚洲第五色综合网 | 免费观看一级黄色片 | 国产美女视频一区二区三区 | 成人午夜精品久久久久久久蜜臀 | 日韩欧美精品中文字幕 | 99riav视频一区二区 | 欧美视频一二三区 | 4p一女两男做爰在线观看 | 国产精品久久久久久久久久iiiii | 国产一级一国产一级毛片 | 欧美精品激情视频 | www.成人精品 | 久久国产在线观看 | 久久精品视频免费观看 | 最新午夜综合福利视频 | 毛片免费看电影 | 在线成人影视 | 中文字幕在线观看精品 |