LeetCode #383. Ransom Note
題目:勒索信,如果信上的英文字母都能從雜誌上剪下則判斷為真,無法從雜誌剪下則判斷為否。
解題大意:將信件與雜誌的英文字母比對26個英文字母表,並記錄出現次數,信件字母出現次數小於或等於雜誌則判斷為真。
#1.將兩個string轉為Char[ ]。
#2.設兩個 int[ ] 存放字母出現次數 (alphabetMatch_a、alphabetMatch_b)。
#3.設大迴圈(26次、代表26個英文字母(char)(97)=a)。
#4.設兩個小迴圈做比對用(勒索信字母的長度、雜誌字母的長度)
#5.迴圈從A~Z比對勒索信與雜誌共出現哪幾個英文字母及出現幾次。
#6.如果勒索信相同的字母出現次數大於雜誌則判斷為假。
public class Solution { public bool CanConstruct(string ransomNote, string magazine) { if (ransomNote.Length > magazine.Length)//如果信件字數比雜誌字數還多則直接打掉(false) { return false; } else { char[] charRansomNote = ransomNote.ToCharArray(); char[] charMagazine = magazine.ToCharArray(); int[] alphabetMatch_a = new int[26];// 代表英文的26個字母 int[] alphabetMatch_b = new int[26];// 代表英文的26個字母 for (int i = 0; i < alphabetMatch_a.Length; i++) { for (int Match_a = 0; Match_a < ransomNote.Length; Match_a++) { if (charRansomNote[Match_a] == (char)(97 + i))//(char)(97 + i)為a~z { alphabetMatch_a[i]++; } } for (int Match_b = 0; Match_b < magazine.Length; Match_b++) { if (charMagazine[Match_b] == (char)(97 + i)) { alphabetMatch_b[i]++; } } } for (int i = 0; i < alphabetMatch_a.Length; i++) { if (alphabetMatch_a[i] > alphabetMatch_b[i]) { return false; } } } return true; } }
本頁面為一點點累積學習寫程式之路。
許多資訊不是正確、或只是自己看的懂得。
如果不小心點進來誤導了您,還真的不好意思。