算法基础-字符移位

 链接:https://www.nowcoder.com/questionTerminal/7e8aa3f9873046d08899e0b44dac5e43
来源:牛客网
 

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

 

输入描述:

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


 

输出描述:

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

示例1

输入

AkleBiCeilD

输出

kleieilABCD

冒泡排序的复习

这个思路就是必须要不断唯一保证唯一到最后全是大写字母

位移的条件就是arr[j] 是大写字母 arr[j+]是小写字母 j = 0; j = 1; j =2 ----j = n-2; 这样保证最右边的字符一定是原始位置最右边的大写字母 按例子谢谢就知道了

 

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String s = sc.nextLine();
            char[] arr = s.toCharArray();
            int n = s.length() - 1;
            for(int i = 0; i < n;i++){
                for(int j = 0; j < n - i; j++){
                    if(arr[j] >= 'A' && arr[j]<= 'Z' && arr[j+1] >= 'a' && arr[j+1] <='z'){
                        swap(j, j+1, arr);
                    }
                }
            }
            StringBuilder sb = new StringBuilder();
            for(char c : arr){
                sb.append(c);
            }
            System.out.println(sb.toString());
        }
    }
    private static void swap(int i, int j, char[] arr){
        char c = arr[i];
        arr[i] = arr[j];
        arr[j] = c;
    }
}

大神做法

链接:https://www.nowcoder.com/questionTerminal/7e8aa3f9873046d08899e0b44dac5e43
来源:牛客网

import java.util.*;
public classMain{
    public static void main(String[] args){
        Scanner scan = newScanner(System.in);
        while(scan.hasNext()){
            String str = scan.nextLine();
            System.out.println(getResult(str));
        }
    }
    public static String getResult(String str){
         
         
        return str.replaceAll("[A-Z]","")+str.replaceAll("[a-z]","");
    }
      
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值