美妙的問題描述:
輸入乙個int型整數,按照從右向左的閱讀順序,返回乙個不含重複數字的新的整數。
for example: if you input 9876673,the coumputer gives 37689.
我想到啦兩種方法,一種是從字串的角度,一種是從整數的角度!
從整數的角度:
我剛開始時的做法:
1 #include2該如何優化嘞:using
namespace
std;
3int
main()4;
7while(cin>>n)816
for(int i=0;i<100;i++)
1720 cout<
22return0;
23 }// 結果是有所錯誤滴!
#includeusing namespace std;int main()int main()
; while(n)
;10int num=0
;11 cin>>n ;
12while
(n)13
19 n/=10;20
}2122 cout
2324
return0;
25 }
關於從字串的角度:
我一開始時的思緒停滯於此:
#includeusing namespace std;
; cin.getline(s);
len=s.size();
for(i=len-1;i>=0;i--)
13 cout
14return0;
15 }
運用這種模板這種思路這種方法可以迅速地解決下面這個問題:
字元個數統計:
編寫乙個函式,計算字串中含有的不同字元的個數。字元在acsii碼範圍內(0~127)。不在範圍內的不作統計。
#includeusing namespace std;int main()int main()
} cout
#includeusing namespace std;
12 cout
13 }
使用map來嘞:
#includeusing namespace std;int main()
cout有個關於int的小話題敘述於此:
詳細討論可見該篇blog.
2019/7/19 重新翻閱這篇部落格,再來補充一下關於find_last_of()的一些字串相關的查詢函式的敘述。
functions:
1.find_first_of和find_last_of函式進行簡單的匹配
例如:在字串中查詢單個字元c。
對啦:size_t是一種資料相關的無符號型別,它被設計得足夠大以便能夠記憶體中任意物件的大小。在c++中,設計 size_t 就是為了適應多個平台的 。size_t的引入增強了程式在不同平台上的可移植性。
在需要通過陣列下標來訪問陣列時,通常建議將下標定義size_t型別,因為一般來說在進行下標訪問時,下標都是正的。當然,也不是所有的下標訪問操作下標都是正的。
精闢的論述:
關於指標的大小,網上描述基本上是千篇一律,認為指標是存放位址的,如果是32位機器就是4位元組的,如果是64位機器就是8位元組的,根據機器字而決定的。
這裡的32位機器和64位機器指的是什麼呢?我覺的cpu的架構決定了機器的型別,如果cpu是x86架構,那麼就是32位的cpu,當然並非所有的x86架構的cpu都是32位的,比如intel的8086和8088就是16位的cpu。
如果cpu是x86-64的架構,那麼就是64位的cpu。cpu的位數是由其字長決定,字長表示cpu在同一時間中能夠處理二進位制數的位數叫字長。字長是由cpu中暫存器的位數決定的,並非由資料匯流排的寬度決定的,只是資料匯流排的寬度一般與cpu的位數相一致。
系統的位數是依賴於cpu的位數,即32位的cpu不能裝64位的系統,但是現在(2023年)的cpu基本上都是x86-64的cpu,都支援64位的系統。但是正如上面的討論,如果編譯生成的程式不是64位的,那麼指標的大小依然是4個位元組。
所以這個語句一點都不衝突啦:
size_t
found = str.find_first_of(
';'
);
//找到第乙個';'的位置 使用size_t可能會提高**的可移植性、有效性或者可讀性,或許同時提高這三者。
參考blog:
further on the exploration of strings:
npos是乙個常數,表示size_t的最大值(maximum value for size_t)。許多容器都提供這個東西,用來表示不存在的位置,型別一般是std::container_type::size_type。
find函式在找不到指定值得情況下會返回string::npos。
舉例如下(計算字串中含有的不同字元的個數):
#includeusing namespace std;int main()
cout<
}
提取不重複的整數
題目描述 輸入乙個 int 型整數,按照從右向左的閱讀順序,返回乙個不含重複數字的新的整數。輸入描述 輸入乙個 int 型整數。輸出描述 按照從右向左的閱讀順序,返回乙個不含重複數字的新的整數。示例1 輸入 9876673 輸出 37689 示例 1 網頁 ok linux 也 ok linux 編...
提取不重複的整數
輸入乙個int型整數,按照從右向左的閱讀順序,返回乙個不含重複數字的新的整數。輸入乙個int型整數 按照從右向左的閱讀順序,返回乙個不含重複數字的新的整數 輸入 9876673 輸出 37689 對於輸入整數n,迴圈採用n 10和n 10可以獲得該整數的每一位的數字,本題的關鍵在於去除重複數字並且不...
華為 提取不重複的整數
輸入乙個int型整數,按照從右向左的閱讀順序,返回乙個不含重複數字的新的整數。輸入乙個int型整數按照從右向左的閱讀順序,返回乙個不含重複數字的新的整數示例1 複製9876673複製 37689題解 include using namespace std int main int n cin n w...