程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [LeetCode]Reverse Words in a String

[LeetCode]Reverse Words in a String

編輯:C++入門知識

題目:

Given an input string, reverse the string word by word.

For example,

Given s = "the sky is blue",

return "blue is sky the".

解答:

首先理解題意很重要,不然會浪費很多時間在細節上,先理清題目隱藏的一些細節:1,字符串的兩端的空格要去掉;2,單詞間只保留一個空格,如以下測試用例:

     "            "
        "a        "
        "             a        "
        "             a"
        "             a                     b        "
        "             a b       "
        "             a  b"
        "a  b      "
        "             a  b                c d e f                          g      "
代碼如下:

class Q151_ReverseWords{

	//ac
	public static String reverseWords(String s){
		if(s=="") return "";
		String str="";
		int start=0,end;
		for(int i=s.length()-1;i>=0;){
			while(i>=0&&s.charAt(i)==' ') 
				i--;
			if(i!=start) str+=" ";
			end=i;
			while(i>=0&&s.charAt(i)!=' ') i--;
			start=i;
			str+=s.substring(start+1,end+1);
		}
		//去除兩端空格
		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);
	}
	public static void main(String[] args){
		String str="   a   b    ";
		System.out.print(str);
		System.out.println("--");
		System.out.print(reverseWords(str));
		System.out.println("--");
	}
}

---EOF---



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved