1. 程式人生 > >關於String的簡單程式設計題

關於String的簡單程式設計題

一、將字串反轉

package string;

public class Reverse {

    public static void main(String[] args) {
        String s1 = "abc   defg wf";

        //用字串轉字元陣列實現反轉
        String s2 = "";
        char[] cs = s1.toCharArray();
        for (int i = cs.length - 1; i >= 0; i--) {
            s2 = s2 + cs[i];
        }
        System.out
.println("方法一反轉操作後為:" + s2); //利用StringBuffer的reverse()方法實現反轉 StringBuffer sb = new StringBuffer(s1); StringBuffer sb2 = sb.reverse(); System.out.println("方法二反轉操作後為:" + sb2); //利用倒序儲存實現反轉 String s3=myReverse(s1); System.out.println("方法三反轉操作後為:" + s3); } public
static String myReverse(String str) { char[] arr = new char[str.length()]; int pos = str.length(); for (int x=0; x<str.length(); x++) { arr[x] = str.charAt(--pos); } str = String.copyValueOf(arr); return str; } }

輸出:

方法一反轉操作後為:fw gfed   cba
方法二反轉操作後為:fw gfed   cba
方法三反轉操作後為:fw gfed   cba

二、實現去字串兩端空格功能

package string;

public class Trime {
    public static void main(String[] args) {
        String str1 = "   dwwg dwg  wfg   ";
        //利用String類自己的方法去除兩端空格
        String str2 = str1.trim();
        System.err.println("方法一"+str2);
        //自定義方法去除兩端空格
        String str3=myTrim(str1);
        System.err.println("方法二"+str3);

    }

    public static String myTrim(String str) {
        int start = 0, end = str.length() - 1;
        while (start <= end && str.charAt(start) == ' ')
            start++;
        while (start <= end && str.charAt(end) == ' ')
            end--;
        return str.substring(start, end + 1);
    }
}

輸出:

方法一dwwg dwg  wfg
方法二dwwg dwg  wfg

三、獲取一個字串在另一個字串中出現的次數,並返回出現起始索引

package string;

public class GetCount {

    public static void main(String[] args) {
        String str = "sshelloworldhellojavahellojsp";
        System.out.println("count=" + getSubCount(str, "hello"));
    }


    public static int getSubCount(String str, String key) {
        int count = 0;
        int index = 0;
        while ((index = str.indexOf(key, index)) != -1) {
            System.out.println("index=" + index);
            index = index + key.length();
            count++;
        }
        return count;
    }

}
index=2
index=12
index=21
count=3

indexOf返回的是長字串中所求子字串起始處索引值,沒有則返回-1.

四、將一段英文句子倒序輸出

package string;
import java.util.Scanner;

public class Reverse02 {
    public static String reverseWords(String sentence) {

        StringBuilder sb = new StringBuilder(sentence.length() + 1);
        String[] words = sentence.split(" ");
        for (int i = words.length - 1; i >= 0; i--) {
            sb.append(words[i]).append(' ');
        }
        sb.setLength(sb.length() - 1);
        return sb.toString();
    }

    public static void main(String[] args)

    {
        Scanner in = new Scanner(System.in);
        // 存放輸入的字串
        System.out.println("輸入測試用例數目n:");
        String[] input = new String[in.nextInt()];
        in.nextLine();

        for (int i = 0; i < input.length; i++) {
            input[i] = in.nextLine();
        }
        // 輸出倒序後的英文字串
        System.out.println("輸出為:");
        for (String s : input) {
            System.out.println(reverseWords(s));
        }
    }
}
輸入測試用例數目n2
hello world!
i love you?
輸出為:
world! hello
you? love i

四、刪除一個字串中出現最多的字元

package string;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class DelMost {
    public static void main(String[] args) {
        String str = "aassdfscfw";
        Map<Character, Integer> map = new HashMap<Character, Integer>();
        char[] box = str.toCharArray();
        for (char ch : box) {
            Integer i = map.get(ch);
            if (i == null) {
                map.put(ch, 1);
            } else {
                map.put(ch, i + 1);
            }
        } // 建立map鍵值對

        Integer max = 0;
        Set<Character> set = map.keySet();
        for (Character key : set) {
            Integer j = map.get(key);
            if (max < j) {
                max = j;
            }
        } // 將最大次數傳給max

        for (Character key : set) {
            if (map.get(key) == max) {
                str = str.replaceAll(key.toString(), "");
            }
        }
        System.out.println(str);

    }
}
aadfcfw

五、輸入一行字元分別統計英文字母、數字、空格個數。

package string;

import java.util.Scanner;

public class Tongji {
    public static void main(String[] args) {
        int eng=0,num=0,kong=0,elsel=0;
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        char[] ch=null;
        ch=str.toCharArray();
        for(char c:ch){
            if(c>='0'&&c<='9'){
                num++;
            }else if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
                eng++;
            }else if(c==' '){
                kong++;
            }else{
            elsel++;
            }
        }
        System.out.println("字母有"+eng);
        System.out.println("數字有"+num);
        System.out.println("空格有"+kong);
        System.out.println("其他"+elsel);
    }
}
hello world 378nihao
字母有15
數字有3
空格有2
其他0