華為oj 字串萬用字元
本題,其實和分蘋果的題有那麼一丟丟的類似,在此提供兩種能通過的解法(主要就是對於‘*’的處理)
1.這種解法其實是錯誤的,但是也要說說他的思路,對於 ‘*’ 他直接找 ‘*’ 下一個字元是否出現在需要匹配的串中,並且找到那個位置,認為此位置到之前就是‘*’所匹配的內容。
但是這種解法是錯誤的,在此給出一個測試用例
J*Smi??
JhonSSmith
至於為什麼他能通過,oj太爛被!
#include<iostream> #include<string> using namespace std; int main() { string str1, str2; int i, j,len1,len2; cin >> str1 >> str2; len1 = str1.size(); len2 = str2.size(); i = j = 0; while (i < len1&&j < len2) { if (str1[i] == '?') { i++; j++; } else if (str1[i] == '*') { i++; j=str2.find(str1[i], j);//這就是我上面思路中的關鍵語句 if (j == string::npos) { j = len2; } } else { if (str1[i] == str2[j]) { i++; j++; } else { cout << "false"; return 0; } } } if (i == len1 && j == len2) cout << "true"; else cout << "false"; return 0; }
2.這種提供的方法,我認為是標準的解法,先看程式碼,再解釋
解釋:對於 ‘*’ 的處理,要麼匹配0次,對應語句ISMatch(s1,s2,p-1,q),要麼匹配多次ISMatch(s1,s2,p,q-1),對於遞迴截止條件,只有當p和q同時小於0,即都匹配完成時才算匹配成功!#include <iostream> using namespace std; bool ISMatch(char *s1, char *s2, int p, int q) { if (p<0 && q<0) { return true; } if (p<0 || q<0) { return false; } if (s1[p] == '*') { return ISMatch(s1, s2, p-1, q) || ISMatch(s1, s2, p, q-1); } if (s1[p] == s2[q] || s1[p] == '?') { return ISMatch(s1, s2, p-1, q-1); } return false; } int main() { char inStr[30]; char matchStr[30]; bool ret; gets_s(inStr); gets_s(matchStr); if (inStr == NULL || matchStr == NULL) { cout << "false" << endl; return 0; } ret = ISMatch(inStr, matchStr, strlen(inStr) - 1, strlen(matchStr) - 1); if (ret) { cout << "true" << endl; } else { cout << "false" << endl; } return 0; }
相關推薦
華為oj 字串萬用字元
本題,其實和分蘋果的題有那麼一丟丟的類似,在此提供兩種能通過的解法(主要就是對於‘*’的處理) 1.這種解法其實是錯誤的,但是也要說說他的思路,對於 ‘*’ 他直接找 ‘*’ 下一個字元是否出現在需要匹配的串中,並且找到那個位置,認為此位置到之前就是‘*’所匹配的內容。
華為OJ——字串萬用字元
題目描述 問題描述:在計算機中,萬用字元一種特殊語法,廣泛應用於檔案搜尋、資料庫、正則表示式等領域。現要求各位實現字串萬用字元的演算法。 要求: 實現如下2個萬用字元: *:匹配0個或以上的字元(字元由英文字母和數字0-9組成,不區分大小寫
字串萬用字元/華為機試(C/C++)
題目描述 問題描述:在計算機中,萬用字元一種特殊語法,廣泛應用於檔案搜尋、資料庫、正則表示式等領域。現要求各位實現字串萬用字元的演算法。 要求: 實現如下2個萬用字元: *:匹配0個或以上的字元(字元由英文字母和數字0-9組成,不區分大小寫。下同) ?:匹配1個字元 輸
【華為機試071】字串萬用字元
題目描述: 在計算機中,萬用字元一種特殊語法,廣泛應用於檔案搜尋、資料庫、正則表示式等領域。現要求各位實現字串萬用字元的演算法。 要求: 實現如下2個萬用字元: *:匹配0個或以上的字元(字元由英文字母和數字0-9組成,不區分大小寫。下同) ?:匹配1個字元 輸入: 萬用字元表示式;
華為code中的字串萬用字元匹配
#define FALSE 0 #define TRUE 1 #define M 300 #include<stdio.h> #include<string.h> int equal(char *s, char *p) { char tem
華為oj 字串個數統計&&數字顛倒&&字串翻轉&&字元逆序&&求int型資料在記憶體中儲存時1的個數
同樣只上程式,都是簡單題 #include<iostream> using namespace std; int main() { int in[128], count = 0; char n,temp[100]; memset(in, 0, sizeo
華為因80萬用戶資訊誤刪遭移動5億罰款 又是臨時工闖的禍?
2017年最倒黴的工程師誕生了,這位仁兄在升級移動的HLR時一個小小的誤操作, 80萬南寧移動使用者資料丟失。估計事故發生時,這位大神菊花一緊,已經瞬間“石化”。 有訊息稱,因為此次事故,華為已經被中國移動處以5億罰款,同時中國移動已經展開全國範圍的系統大排查,主要針對華為第三方代維隱患問題。 事
【每日面試題】字串萬用字元匹配問題
題目:在一篇英文文章中查詢指定的人名,人名使用二十六個英文字母(可以是大寫或小寫)、空格以及兩個萬用字元組成(*、?),萬用字元“*”表示零個或多個任意字母,萬用字元“?”表示一個任意字母。 如:“J* Smi??” 可以匹配“John Smith” . 請用C語言實現如下
華為oj 字串匹配
用一個數組儲存每個字元出現的個數然後,然後進行判斷就行! #include<iostream> #include<string> using namespace std; int main() { int trans[128]; memset(
華為 oj 簡單密碼破解&&汽水瓶&&刪除字串中出現次數最少的字元&&字串排序
這四道題就不上圖了,因為太簡單,就四道題湊在一起了,應該放在簡單題中。 第一題.這道題只需要注意字母‘Z’時候的轉換,直接上程式碼 #include<iostream> #include<string> using namespace std;
華為oj:計算字串最後一個單詞的長度,單詞用空格隔開
/* 描述 計算字串最後一個單詞的長度,單詞以空格隔開。 知識點 字串,迴圈 執行時間限制 0M 記憶體限制 0 輸入 一行字串,長度小於128。 輸出 整數N,最後一個單詞的長度。
LeetCode 10 & 44 正則表示式匹配 & 萬用字元匹配 字串匹配問題
10 正則表示式匹配 給定一個字串 (s) 和一個字元模式 (p)。實現支援 ‘.’ 和 ‘*’ 的正則表示式匹配。 ‘.’ 匹配任意單個字元。 ‘*’ 匹配零個或多個前面的元素。 匹配應該覆蓋整個字串 (s) ,而不是部分字串。 說明: s 可能為
字串反轉——來自華為OJ平臺測試基礎篇
/* * 字串反轉 * 與字元逆序一樣,是同一個程式 * 描述: 寫出一個程式,接受一個字串,然後輸出該字串反轉後的字串。例如: * 知識點: 陣列,指標 * 題目來源: 內部整理 * 練習階段: 初級 * 執行時間限制: 10Se
python-進階教程-利用萬用字元進行字串匹配
0.摘要 在Linux Shell中,我們可以用ls *.py的命令顯示所有以.py結尾的檔案或資料夾。在python中我們可以藉助fnmatch模組,實現含萬用字元的字串匹配。 1.常用萬用字元 符號 作用
在mySQl中,SQL語言允許使用萬用字元進行字串匹配的操作,其中“%”不能表示()。A.0個字元B.一個字元C.多個字元D.搜尋關鍵字中包含字元“%”
加粗樣式@TOC 歡迎使用Markdown編輯器 你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,瞭解一下Markdown的基本語法知識。 新的改變 我們對Markdown編輯
對Java萬用字元的個人理解(以集合為例)
二、泛型萬用字元講解 <一>萬用字元的使用以及程式碼演示 1.無限萬用字元<?>的使用:可以傳入任何引用資料型別 A 在呼叫方法時使用?萬用字元的過程中無法使用add方法。原因分析:因為萬用字元?代表任意的資料型別,但是當我們呼叫的時候或者用在方法的宣告上,其實這個
華為oj 公共字串計算
此題是經典的動態規劃的題:設c[i][j] 表示第一個字串從開始到 i 的位置,和第二個字串從開始到 j 的位置的最長公共字串的長度,那麼我們可以根據題目得知一下條件 1.如果pFirstStr[i+1]==pSecondStr[j+1],那麼c[i+1][j+1]=c[
華為oj 明明的隨機數&&計算字元個數
在此提供三種解法,其實三種解法殊途同歸,不就是排個序,去個重就好! 1.利用map特點,插入map之後,會自動根據關鍵字排序,而且不會出現相同的關鍵字,正好滿足特性 #include<iostream> #include<map> using na
[華為OJ--C++]088-按位元組擷取字串
題目描述:編寫一個擷取字串的函式,輸入為一個字串和位元組數,輸出為按位元組擷取的字串。但是要保證漢字不被截半個,如"我ABC"4,應該截為"我AB",輸入"我ABC漢DEF"6,應該輸出為"我ABC"
華為OJ:字串加解密
題目描述 1、對輸入的字串進行加解密,並輸出。 2加密方法為: 當內容是英文字母時則用該英文字母的後一個字母替換,同時字母變換大小寫,如字母a時則替換為B;字母Z時則替換為a; 當內容是數字時則把該數字加1,如0替換1,1替換2,9替換0; 其他字元不做變化。 3