一天一道演算法題 5 28 字串的對映

2022-05-13 18:27:10 字數 1800 閱讀 7126

這題 根據題意  網上終於找到個 相似的題目

戳我原題 給的實在太長了  我給你簡短翻譯一下:

給定兩個長度均為n的字串( n<=100) 判斷它們之間的26個字母能否一一對應 如abb和cdd可以相互對應  方法是a->c  b->d

要是相同 輸出yes 否則 輸出no

//先去次飯了 回來再寫下去。。。。

go on。。。

講下這題的思路:

既然是字母一一對應的 那麼如果是yes的情況下 那麼相對應的字母的個數必然是相等的 想到這裡 這題就不難了  就是怎麼將字串中每個字母出現的次數儲存下來

這邊 注意的是 不能忘記了排序   你可能a中 儲存了3個a 2個b  b中保持了2個c 3個d 要是不進行排序 可能導致2和3 進行比較 就得出了錯誤的結論

這邊它提供了 用 map的做法 看上去 的確 高大上 而且很舒服

1 #include 2 #include 3 #include 

4 #include 5 #include 6 #include 7

using

namespace

std;89

string

str1 , str2;

10int cnta[110

];11

int cntb[110

];12

intmain()

1331 alen =stra.size();

32 blen =strb.size();

33if( alen!=blen )

3437

else

3844 i = 0;45

for( itb = strb.begin() ; itbstrb.end() ; itb++)

4649 sort( cnta , cnta+alen );

50 sort( cntb , cntb+blen );

51for( i = 0 ; i)

5258

}59 printf( "

%s\n

",flag?"

yes":"no"

);60}61

}62return0;

63 }

view code

我自己寫了個不用map實現的 **短了點 但感受還是用map看上去 厲害點。。。

1 #include 2 #include 3 #include 4

using

namespace

std;56

char stra[110] , strb[110];7

int cnta[110] , cntb[110];8

9int

main()

1023 sort( cnta , cnta+26

);24 sort( cntb , cntb+26

);25

for( i=0 ; i<=25 ; i++)

2632

}33 printf( "

%s\n

",flag?"

yes":"no"

);34}35

return0;

36 }

view code

最近 要作web   又要應付 高數 ....

有個妹子 陪伴就好了

new 乙個出來?

可以不 delete 嗎..................

一天一道演算法題 樹狀陣列

題目 模板 樹狀陣列1 樹狀陣列和線段樹差不多,可以處理區間操作,但是處理不了太複雜的區間問題。不過 比線段樹簡潔很多很多!時間複雜度都為o logn 例如,區間 1,8 儲存方式如下 1 tree 1 num 1 001 001 2 tree 2 num 2 num 1 010 010 001 3...

一天一道演算法題 線段樹

題目 模板 線段樹1 rmq問題 range minimum maximum query 和求區間和的問題可以用暴力法做,時間複雜度為o n 2 用在本題會超時,所以我們選擇線段樹做。線段樹是一種用於區間操作的資料結構,用二叉樹構造。如圖。線段樹的每個節點代表了乙個區間。防止超時,用了lazy標記。...

一天一道演算法題 5 24 遞迴

我們每一天都應該比昨天更強一點 觀察下列式子 12 12 1 12 6 2 12 4 3 12 3 4 12 3 2 2 12 2 6 12 2 3 2 12 2 2 3 對於給定的n 計算n公有多少種不同的分解式?1 include 2 using namespace std 34 int cnt...