Cho một chuỗi s và một mảng các chuỗi A. Cần tìm xem mảng có chứa chuỗi nào khác với s đúng một ký tự (cùng độ dài) hay không. Ví dụ s = "banana", mảng ["bana", "orange", "banaba", "banapy"], kết quả true vì "banaba" chỉ khác một ký tự so với "banana".
Các bước giải quyết:
Duyệt chuỗi s, kiểm tra từng chuỗi trong mảng:
Kiểm tra chuỗi trong mảng có cùng độ dài với s không
Nếu cùng độ dài, kiểm tra có đúng một ký tự khác nhau hay không, nếu có trả về true, ngược lại false.
Ví dụ
#include<iostream> #include<vector> using namespace std; bool hasOneCharMismatch(vector<string>arr, string s) { int n = arr.size(); if (n == 0) return false; for (int i = 0; i < n; i++) { if (arr[i].size() != s.size()) continue; bool difference = false; for (int j = 0; j < (int)arr[i].size(); j++) { if (arr[i][j] != s[j]) { if (!difference) difference = true; else { difference = false; break; } } } if (difference) return true; } return false; } int main() { vector<string> arr; arr.push_back("bana"); arr.push_back("orange"); arr.push_back("banaba"); arr.push_back("banapy"); if(hasOneCharMismatch(arr, "banana")){ cout << "One character mismatch found"; } else{ cout << "One character mismatch not found"; } }Kết quả
One character mismatch found