zoukankan      html  css  js  c++  java
  • 字符串翻转

    对于一个给定的字符串,我们需要在线性(也就是O(n))的时间里对它做一些变形。首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把着个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。比如"Hello World"变形后就变成了"wORLD hELLO"。

    输入描述:
    给定一个字符串s以及它的长度n(1≤n≤500)
    输出描述:
    请返回变形后的字符串。题目保证给定的字符串均由大小写字母和空格构成。
    输入例子:
    "This is a sample",16
    输出例子:
    "SAMPLE A IS tHIS"
    解题

    1.首先整体字符串翻转
    2.大小写翻转
    3.以空格为间隔划分的子字符串翻转
    import java.util.*;
    
    public class Transform {
        public String trans(String s, int n) {
            // write code here
            char[] chArr = s.toCharArray();
            change(chArr);
            reverse(chArr,0,chArr.length - 1);
            int i = 0;
            int j = 0;
            while(j<chArr.length && chArr[j] == ' ')
                j++;
            while( i < chArr.length ){
                
                if(chArr[i] == ' '){
                    int tmpi = i;
                    reverse(chArr,j,tmpi-1);
                    while(i< chArr.length && chArr[i] == ' ')
                        i++;
                    j = i;
                }else
                    i++;
            }
            if(j <i)
                reverse(chArr,j,i-1);
            return String.valueOf(chArr);
        }
        public void change(char[] chArr){
            for(int i = 0;i< chArr.length;i++){
                if(isLowerCase( chArr[i])){
                    chArr[i]= (char) (chArr[i] - 'a' + 'A');
                }else if(isUpperCase(chArr[i])){
                    chArr[i] = (char) (chArr[i] - 'A' + 'a');
                }
            }
        }
        public void reverse(char[] chArr,int low ,int high){
            while(low < high){
                char tmp = chArr[low];
                chArr[low] = chArr[high];
                chArr[high] = tmp;
                low++;
                high--;
            }
        }
        public boolean isUpperCase(char ch){
            if('A' <= ch && ch<= 'Z')
                return true;
            return false;
        }
        public boolean isLowerCase(char ch){
            if( 'a' <= ch && ch<= 'z')
                return true;
            return false;
        }
    }
  • 相关阅读:
    JavaScript高级-----8.函数进阶(2)
    JavaScript高级-----7.函数进阶(1)
    2014-10-18 来美半个月
    修手机记
    圆梦美利坚之三:租房记
    圆梦美利坚之二:买机票记
    Hadoop 停止Job
    IIS应用程序池数目
    HTML5 microdata
    Java sql helper[转]
  • 原文地址:https://www.cnblogs.com/bbbblog/p/5414572.html
Copyright © 2011-2022 走看看