劍指offer 17 數字,字串,全排列

2021-10-22 17:07:51 字數 1464 閱讀 1303

此題給定乙個n,輸出(10, n)之下的所有數字,看到我就會了啊,啪的一下就過了。

class

solution

};

結果一看題解,發現小丑真的是我自己。人家根本就沒給範圍啊,假如n是100,那是涼的透透的啊。所以要用大數加法做一下。由於每次只加1,**還是比較簡單的。

#define _crt_secure_no_warnings

#include

#include

#include

#include

#include

typedef

long

long ll;

using

namespace std;

int inf =

1<<30;

int n =10;

void

add(string& s)}}

intmain()

}

還有一種優化,就是不要每次用字串比較,這樣每次都是o(n),可以在最高位產生進製時停止,可以省去比較的時間。這個判斷的優化還是挺有用的。

#define _crt_secure_no_warnings

#include

#include

#include

#include

#include

typedef

long

long ll;

using

namespace std;

int inf =

1<<30;

int n =5;

intadd

(string& s)

}return0;

}int

main()

}

解法二:全排列做法

排列的做法即為從頭到尾列舉0-9,由於這種自右向左從小到大的遞增性,可以生成從1到對應位數的**,很強,咱們在所有位列舉完後列印即可。

這個做法和全排列還不太一樣,全排列是每個數字都必須出現。

#define _crt_secure_no_warnings

#include

#include

#include

#include

#include

typedef

long

long ll;

using

namespace std;

int inf =

1<<30;

int n =3;

void

add(string& s,

int idx)

for(

int i =

0; i <

10; i++)}

intmain()

劍指offer 字串全排列

題目 輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。思路 元素排列是遞迴問題,在某個位置上選擇哪個元素就對應著該位置上的元素與其他元素相交換 不要忘了與自己交換的情況 所以按照排列...

劍指offer 字串的全排列

題目描述 輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。輸入描述 輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。注意有可能重複,因此需要判斷def swap s...

劍指Offer之字串全排列

題目 輸入乙個字串,列印出該字串中字元的所有排列。你可以以任意順序返回這個字串陣列,但裡面不能有重複元素 輸入 s abc 輸出 abc acb bac bca cab cba class solution for int j i j變形二 列印字串的所有子串行 public class demo2...