提取不重複的整數

2022-02-16 06:28:50 字數 2863 閱讀 4090

美妙的問題描述:

輸入乙個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()

; while(n)

;10int num=0

;11 cin>>n ;

12while

(n)13

19 n/=10;20

}2122 cout

2324

return0;

25 }

關於從字串的角度:

我一開始時的思緒停滯於此:

#includeusing namespace std;

int main()

; 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()

} cout

#includeusing namespace std;

int main()

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_tfound = 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...