publicint[]NumberOfLines(int[] widths,string S){int[] res =newint[2];if(S.Length ==0)return res;
res[0]=1;int total =0;for(int i =0; i < S.Length; i++){int t = widths[S[i]-'a'];if((total + t)>100){
res[0]++;
total = t;}else{
total += t;}}
res[1]= total;return res;}
回文链表
publicboolIsPalindrome(ListNode head){if(head ==null)returntrue;
Stack<int> stack =newStack<int>();
List<int> list =newList<int>();while(head !=null){
stack.Push(head.val);
list.Add(head.val);
head = head.next;}for(int i =0; i < list.Count; i++){if(list[i]!= stack.Pop()){returnfalse;}}returntrue;}
学生出勤记录 I
publicboolCheckRecord(string s){if(s.Contains("LLL")){returnfalse;}int aCount =0;for(int i =0; i < s.Length; i++){if(s[i]=='A'){
aCount++;}if(aCount >1){returnfalse;}}returntrue;}
旋转字符串
publicboolRotateString(string A,string B){if(A.Length != B.Length)returnfalse;string k = $"{A}{A}";if(k.Contains(B)){returntrue;}else{returnfalse;}}
找不同
publiccharFindTheDifference(string s,string t){int m =0;int n =0;for(int i =0; i < s.Length; i++){
m += s[i];}for(int i =0; i < t.Length; i++){
n += t[i];}return(char)(n - m);}
反转字符串中的元音字母
Stack<char> stack =newStack<char>();for(int i =0; i < s.Length; i++){if(s[i]=='a'|| s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u'|| s[i]=='A'|| s[i]=='E'|| s[i]=='I'|| s[i]=='O'|| s[i]=='U'){
stack.Push(s[i]);}}StringBuilder sb =newStringBuilder();for(int i =0; i < s.Length; i++){if(s[i]=='a'|| s[i]=='e'|| s[i]=='i'|| s[i]=='o'|| s[i]=='u'|| s[i]=='A'|| s[i]=='E'|| s[i]=='I'|| s[i]=='O'|| s[i]=='U'){
sb.Append(stack.Pop());}else{
sb.Append(s[i]);}}return sb.ToString();
颠倒二进制位
publicuintreverseBits(uint n){string k = Convert.ToString(n,2);if(k.Length <32){int differenceValue =32- k.Length;for(int i =0; i < differenceValue; i++){
k = $"0{k}";}}StringBuilder sb =newStringBuilder();
Stack<char> stack =newStack<char>();for(int i =0; i < k.Length; i++){
stack.Push(k[i]);}for(int i =0; i < k.Length; i++){
sb.Append(stack.Pop());}return Convert.ToUInt32(sb.ToString(),2);}
验证回文串
publicboolIsPalindrome(string s){
s = s.ToLower();StringBuilder sb =newStringBuilder();
Stack<char> stack =newStack<char>();for(int i =0; i < s.Length; i++){char c = s[i];if((c >='0'&& c <='9')||(c >='a'&& c <='z')){
sb.Append(c);
stack.Push(c);}}string ss = sb.ToString();for(int i =0; i < ss.Length; i++){char c = ss[i];if(c != stack.Pop()){returnfalse;}}returntrue;}
publicstring[]FindRelativeRanks(int[] nums){
Dictionary<int,string> dic =newDictionary<int,string>();
List<int> list =newList<int>();for(int i =0; i < nums.Length; i++){
list.Add(nums[i]);}string[] res =newstring[nums.Length];
Array.Sort(nums);
Array.Reverse(nums);int temp =3;for(int i =0; i < nums.Length; i++){if(i ==0){
dic.Add(nums[i],"Gold Medal");}elseif(i ==1){
dic.Add(nums[i],"Silver Medal");}elseif(i ==2){
dic.Add(nums[i],"Bronze Medal");}else{
dic.Add(nums[i],(++temp).ToString());}}for(int i =0; i < list.Count; i++){
res[i]= dic[list[i]];}return res;}
单词模式
publicboolWordPattern(string pattern,string str){
Dictionary<int,string> dic =newDictionary<int,string>();string[] strArray = str.Split(' ');if(pattern.Length != strArray.Length)returnfalse;for(int i =0; i < pattern.Length; i++){if(!dic.ContainsKey(pattern[i])){if(dic.ContainsValue(strArray[i]))returnfalse;
dic.Add(pattern[i], strArray[i]);}}for(int i =0; i < pattern.Length; i++){if(dic[pattern[i]]!= strArray[i]){returnfalse;}}returntrue;}
两数之和
publicint[]TwoSum(int[] nums,int target){//不考虑顺序从中选取两个不同的的迭代for(int i =0; i < nums.Length; i++){for(int j = i +1; j < nums.Length; j++){if(nums[j]== target - nums[i]){returnnewint[]{ i, j };}}}returnnewint[]{0,0};}
两数之和 II - 输入有序数组
publicint[]TwoSum(int[] numbers,int target){for(int i =0; i < numbers.Length; i++){for(int j = i +1; j < numbers.Length; j++){if(numbers[i]+ numbers[j]== target){returnnewint[]{ i+1, j+1};}}}returnnewint[]{0,0};}
字符串中的第一个唯一字符
publicintFirstUniqChar(string s){
Dictionary<char,int> dic =newDictionary<char,int>();foreach(var item in s){if(!dic.ContainsKey(item)){
dic.Add(item,1);}else{
dic[item]+=1;}}for(int i =0; i < s.Length; i++){if(dic[s[i]]==1){return i;}}return-1;}
两个列表的最小索引总和
publicstring[]FindRestaurant(string[] list1,string[] list2){var min =int.MaxValue;var dic =newDictionary<string,int>();for(var i =0; i < list1.Length; i++){for(var j =0; j < list2.Length; j++){if(list1[i]== list2[j]){
min = Math.Min(min, i + j);
dic.Add(list1[i], i + j);}}}return(from r in dic.ToList()where r.Value == min
select r.Key).ToArray();}
同构字符串
publicboolIsIsomorphic(string s,string t){var dic =newDictionary<int,int>();for(int i =0; i < s.Length; i++){if(!dic.ContainsKey(s[i])){if(dic.ContainsValue(t[i]))returnfalse;
dic[s[i]]= t[i];}}for(int i =0; i < s.Length; i++){if(dic[s[i]]!= t[i])returnfalse;}returntrue;}
至少是其他数字两倍的最大数
publicintDominantIndex(int[] nums){
List<int> list =newList<int>();foreach(var item in nums){
list.Add(item);}
Array.Sort(nums);int max = nums[nums.Length -1];for(int i =0; i < nums.Length -1; i++){if(max < nums[i]*2){return-1;}}for(int i =0; i < list.Count; i++){if(list[i]== max){return i;}}return-1;}
杨辉三角 II
int[][] res =newint[rowIndex +1][];for(int i =0; i < res.Length; i++){
res[i]=newint[rowIndex +1];}
res[0][0]=1;for(int i =1; i < rowIndex +1; i++){
res[i][0]=1;for(int j =1; j < i +1; j++){
res[i][j]= res[i -1][j -1]+ res[i -1][j];}}return res[rowIndex];