今天給學生出了個題目,題目為:輸入任意兩個字串,判斷第乙個字串中是否包含第二個字串。於是使引出了乙個「勤與懶」的故事。
學生基本有兩種狀況,很短時間做出來的(這部分佔大多數),很長時間做出來的(當然佔小部分)。
公共部分:
console
.writeline("
請輸入第乙個字串:");
string str1 = console.readline();
console.writeline("
請輸入第二個字串:");
string str2 = console.readline();
if (str2.length > str1.length)
先看一下短時間做出來的:
//方法1 if
(str1.contains(str2))
else //
方法2
if (str1.indexof(str2) != -1)
else
當然偷賴的方法還有許多,基本上就是簡單應用字串函式就能實現。
接下來看一下相對長時間的方法:
bool
mark = false;
for (int i = 0; i < str1.length - str2.length; i++)
if (temstr == str2)
} if (mark)
else
這個方法相對來說還算厚道,因為拿str2總體作為乙個單位,從str1的第一位開始切取,來與str2進行對比,這裡沒有直接用到字串函式,整個例子,還算有點邏輯。
再看時間最長的:
char arrchar1 = str1.tochararray();
char arrchar2 = str2.tochararray();
int tem2 = 0;//
臨時的變數
int lj = 0;//
記錄匹配str2的累加器
int lj2 = 0;//
記錄str1比較的標誌
for (int i1 = lj2; i1 < arrchar1.length; i1++)
break; }
else
tem2 = 0;//
復位str2的比較
if (lj != 0) //
如果string2的累加器有數字,則退回到str1的前一位進行比較
lj = 0;//str1
累加器重新開始
break; }
} }
當然,**看起來挺多,這個思路就是把字串轉成字元陣列,常規的去比較第二個字串是否在第乙個中間,並且是按元素去比較的,可能說起來不難,但做起來還是有麻煩的點,關鍵就是在迴圈中間卡幾個定位標誌。
上面的三種情況,讓我想到了「勤與懶」,前的學生偷了懶,用現成的函式完成了,後面的同學,相當於實現了這樣乙個函式。看起來前面的同學挺精明,用少量的**完成了工作。但我相信,後面的同學則收穫了更多。
如果現在是做專案,當然,「偷懶」的做法是可取的,但現在是做練習,就是練基本功,「勤快」點,對於提公升和發展還是有好處的。一句話:「在適當的時候做適當的事」。
字串包含引出來的「勤與懶」故事
今天給學生出了個題目,題目為 輸入任意兩個字串,判斷第乙個字串中是否包含第二個字串。於是使引出了乙個 勤與懶 的故事。學生基本有兩種狀況,很短時間做出來的 這部分佔大多數 很長時間做出來的 當然佔小部分 公共部分 console writeline 請輸入第乙個字串 string str1 cons...
字串包含引出來的「勤與懶」故事
今天給學生出了個題目,題目為 輸入任意兩個字串,判斷第乙個字串中是否包含第二個字串。於是使引出了乙個 勤與懶 的故事。學生基本有兩種狀況,很短時間做出來的 這部分佔大多數 很長時間做出來的 當然佔小部分 公共部分 console writeline 請輸入第乙個字串 string str1 cons...
字串包含引出來的「勤與懶」故事
今天給學生出了個題目,題目為 輸入任意兩個字串,判斷第乙個字串中是否包含第二個字串。於是使引出了乙個 勤與懶 的故事。學生基本有兩種狀況,很短時間做出來的 這部分佔大多數 很長時間做出來的 當然佔小部分 公共部分 console writeline 請輸入第乙個字串 string str1 cons...