牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2017-03-24 投稿人: 浏览次数:458

[编程题] 算法基础-字符移位
小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;
    }
}
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。