zoukankan      html  css  js  c++  java
  • [编程题] 算法基础-字符移位

    小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
    你能帮帮小Q吗?

     


    输入描述:

    输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.



    输出描述:

    对于每组数据,输出移位后的字符串。


    输入例子:
    AkleBiCeilD
    

     

    输出例子:
    kleieilABCD

    思想:用2个指针,一个j标记大写字母位置,一个i从后往前大写字符出现的位置,移动i到j中间的小写字母,注意边界,循环停止条件
     1 package fromniuke;
     2 
     3 import java.util.Scanner;
     4 
     5 public class Test29 {
     6 
     7     public static void main(String[] args) {
     8 
     9         Scanner in = new Scanner(System.in);
    10         while(in.hasNext()){
    11             char[] ch = in.nextLine().toCharArray();
    12             char temp;
    13             int i = ch.length-1,j = ch.length-1;
    14             while(i>=0&&j>=0){
    15                 while(i>=0&&Character.isLowerCase(ch[i])) i--; //从后往前,找到大写字母
    16                 if(i<0)
    17                     break;
    18                 temp = ch[i];
    19                 for (int k = i+1; k <= j; k++) {
    20                     ch[k-1] = ch[k];
    21                 }
    22                 ch[j] = temp;
    23                 j--;
    24                 i--;
    25             }
    26             System.out.println(ch);
    27         }
    28     }
    29 
    30 }
    31 //AkleBiCeilD
    Jumping from failure to failure with undiminished enthusiasm is the big secret to success.
  • 相关阅读:
    【洛谷P1082】同余方程
    【总结】数论相关
    【模板】扩展欧拉定理
    【模板】贝祖定理
    【SPOJ116】Intervals
    【CF1141E】Superhero Battle
    【CF1141F2】Same Sum Blocks
    【CF1141F1】Same Sum Blocks
    【CF1141G】Privatization of Roads in Treeland
    【洛谷P1198】最大数
  • 原文地址:https://www.cnblogs.com/chongerlishan/p/5970583.html
Copyright © 2011-2022 走看看