一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - java實現(xiàn)左旋轉字符串

java實現(xiàn)左旋轉字符串

2021-07-18 15:35雨幕下的稻田 Java教程

這篇文章主要為大家詳細介紹了java實現(xiàn)左旋轉字符串,具有一定的參考價值,感興趣的小伙伴們可以參考一下

匯編語言中有一種移位指令叫做循環(huán)左移(rol),現(xiàn)在有個簡單的任務,就是用字符串模擬這個指令的運算結果。對于一個給定的字符序列s,請你把其循環(huán)左移k位后的序列輸出。例如,字符序列s=”abcxyzdef”,要求輸出循環(huán)左移3位后的結果,即“xyzdefabc”。是不是很簡單?ok,搞定它!

代碼

解法一

最直觀的方式,依次將需要移位的字符移動至最后,但是每個字符都需要移動數組的長度-1,如果數組的長度是n,需要移k位,則總共需要移動 k * (n - 1)

java" id="highlighter_623926">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public static string leftrotatestring(string str, int n) {
    if (strings.isnullorempty(str)) {
      return str;
    }
    if (n < 0 || n >= str.length()) {
      return str;
    }
    char[] strarray = str.tochararray();
    while (n-- > 0){
      // 直接交換的方式,將需要移位的部分通過交換n-1次向左移動
      // 比如abcde,要移動2位,即cdead
      // 1. 將a移動至最后,此時是bcdea
      // 2. 將b移動至最后,此時是cdeab
      for (int i = 0; i < strarray.length - 1; i++) {
        swap(strarray, i, i + 1);
      }
    }
    return new string(strarray);
  }
 
  private static void swap(char[] str, int i, int j) {
    char temp = str[i];
    str[i] = str[j];
    str[j] = temp;
  }

解法二

借助字符串的反轉,比如“ab”對應“ba”,“xyz”對應“zyx”,總共需要三步即可得到期望想過

  • 反轉要移位的部分,”abcxyzdef”操作后是”cbaxyzdef”
  • 反轉其余的部分,”cbaxyzdef”操作后是”cbafedzyx”
  • 反轉整個字符串,”cbafedzyx”操作后是”xyzdefabc”
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public static string leftrotatestring2(string str, int n) {
    if (strings.isnullorempty(str)) {
      return str;
    }
    if (n < 0 || n >= str.length()) {
      return str;
    }
    char[] strarray = str.tochararray();
    // 借助反轉,分三步
    // 1. 反轉要移位的部分
    // 2. 反轉其余部分
    // 3. 整體反轉
    reverse(strarray, 0, n - 1);
    reverse(strarray, n, strarray.length - 1);
    reverse(strarray, 0, strarray.length - 1);
    return new string(strarray);
  }
 
  /**
   * 反轉字符串,兩端依次進行交換即完成反轉
   * @param str
   * @param start
   * @param end
   */
  private static void reverse(char[] str, int start, int end) {
    while (start < end) {
      swap(str, start, end);
      start++;
      end--;
    }
  }
 
  private static void swap(char[] str, int i, int j) {
    char temp = str[i];
    str[i] = str[j];
    str[j] = temp;
  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/zl18310999566/article/details/80250653

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩精品一区二区三区老鸭窝 | 男人的j进入女人的j免费 | 99热久久这里只精品国产www | 热久久最新视频 | 欧美另类videos另类粗暴 | 国产高清dvd | 91精品免费国产高清在线 | 男人日女人的b | xxxx成人 | 亚洲天堂成人在线 | 出差被灌醉绝伦的上司日本 | 亚洲好视频 | 欧美成人福利视频 | 日韩aaa | 高清国产激情视频在线观看 | 传说之下羊妈挤羊奶网站 | 国产乱码在线精品可播放 | 波多野结衣中文字幕 | 亚洲欧洲日产v特级毛片 | 我要看靠逼片 | 国产精品乱码高清在线观看 | pregnantsexxx临盆孕妇 | x8x8国产在线观看2021 | 美女全身体光羞羞漫画 | 91大神在线精品播放 | 美女脱衣有肉 | 久久精品国产欧美日韩99热 | 午夜第九达达兔鲁鲁 | 亚洲欧洲日产国码无码av | 日本一区二区三区四区无限 | 91制片厂制作传媒破解版免费 | 国产在视频| 国产精品1024永久免费视频 | sao虎在线精品永久 s0e一923春菜花在线播放 | 国产日韩欧美一区 | 国产三级自拍 | 午夜无码片在线观看影院 | 日本大片在线 | 男人疯狂进女人下部视频动漫 | 国产精品永久免费自在线观看 | bdsm中国精品调教 |