發文作者:skyx | 2007/05/31

[C++]從一行句子中找出最長的單詞


C++
題目: 從一行句子中找出最長的單詞.
例子: i am a boy.
(一題蠻久前的類似作業題目)

解題思路:
首先是要得到一句從用戶輸入的數據.即一行句子.
接著就是重點部分了.電腦應該怎樣辨認出單詞呢?

這是其中一個方法.
用一個變量記錄字頭,一個變量記錄單詞,一個變量記錄字尾.

wordstart,curword,wordend分別記錄著它們.

代碼段:

#include
#include

using namespace std;

void main()
{

string line,TheLongWord="",curWord;
int WordStart , WordEnd , cur=0;
getline(cin,line);

line+=" “; //為了解決一特殊情況…

while ((WordStart=line.find_first_not_of(" \t",cur))!=string::npos){ //意思為 如果這行裡找不到空白跟制表符且不是到了行末的話就迴圈做.把值放到WordStart裡.
WordEnd=line.find_first_of(" \t",WordStart); //字尾為行裡面第一個找到的空格或者制表符.
curWord=line.substr(WordStart,WordEnd-WordStart); //從字頭跟字尾裡取出中間的字串部分.substr()是取中間字符串的已經定義(內定)了的方法.
cur=WordEnd;
if (curWord.length()>TheLongWord.length()) //比較是否最長
TheLongWord=curWord; //True的話就賦值囉!
}

cout<<"The Long Word of this sentence is: " <


發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

分類

%d 位部落客按了讚: