[编程题] 算法基础-字符移位

[编程题] 算法基础-字符移位
小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
你能帮帮小Q吗?
输入描述:

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

输出描述:

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

输入例子:
AkleBiCeilD

输出例子:
kleieilABCD


比较字母大小写的两种方法:

1.
if(s.charAt(i)>='A'&&s.charAt(i)<='Z')
else if(s.charAt(i)>='a'&&s.charAt(i)<='z')

2.
for (int i = 0;i < s.length();i++)
{
if(Character.isUpperCase(s.charAt(i)) == true)
{
max++;
}
else if(Character.isLowerCase(s.charAt(i)) == true)
{
min++;
}

java字符串替换 一般使用substring() 和replace()方法组合使用达到精确替换的目的.
str.substring(0,1) 可以截取str字符串第一位字符.通过下标控制截取长度.可获得精确字符串
str.replace(“a”,”b”); 把str字符串中所有的字符a都替换成字符b


在java中有3个类来负责字符的操作。
1.Character 是进行单个字符操作的,
2.String 对一串字符进行操作。不可变类。
3.StringBuffer 也是对一串字符进行操作,但是可变类。


String类在继承Object类的时候重写了equals()方法,只是比较两个对象的内容是否相等
StringBuffer类中没有重写Object类的equals()方法,所以比较的是地址和内容。


1.追加和插入字符串

public StringBuffer append(type t);//追加
public StringBuffer insert(int offset,type t);//插入,在offset处加入类型为type的字符串

2.反转和删除字符串

public StringBuffer reverse(); //反转
public StringBuffer delete(int start,int end); //删除

3.StringBuffer类转换成String类

public String toString();

StringBuffer不是不变类,在修改字符串内容时,不会创建新的对象因此,它比String类更适合修改字符串。
StringBuffer类没有提供同String一样的toCharArray方法
StringBuffer类的replace方法同String类的replace方法不同,它的replace方法有三个参数,第一个参数指定被替换子串的起始位置,第二个参数指定被替换子串的终止位置,第三个参数指定新子串

【1】参考详细讲解String与Stringbuffer:http://www.cnblogs.com/kaituorensheng/p/3776484.html


编程:

package Exam;
import java.util.*;
public class moveUpperCase {
    @SuppressWarnings("resource")
    public static void main(String[] agrs){
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
            String s = in.nextLine();
            System.out.println(getResult(s));
        }
    }

    private static String getResult(String s) {
        // TODO Auto-generated method stub
        int len = s.length();
        int k=0;
        char temp;
        char[] a = s.toCharArray();
        for(int i=0;i<len;i++){
            if (a[i]>='a'&&a[i]<='z') {
                    temp = a[i];
                for(int j=i;j>k;j--){
                    a[j]=a[j-1];
                }   
                a[k]=temp;
                k++;
            }

        }
        String reString = String.valueOf(a);

        return reString;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值