C++程序:查找电话号码中的国家代码长度
假设我们有一个包含n个数字字符串的字符串列表S。Amal在一个城市有n个朋友。Amal知道所有朋友的电话号码:它们存储在S中。S中的所有字符串长度相同。Amal需要找出城市的区号。他假设城市的区号是所有朋友电话号码的最长公共前缀。我们需要找到城市区号的长度。
问题类别
为了解决这个问题,我们需要操作字符串。编程语言中的字符串是存储在特定数组类型中的字符流。几种语言将字符串指定为特定数据类型(例如Java、C++、Python);而其他几种语言将字符串指定为字符数组(例如C)。字符串在编程中非常重要,因为它们通常是各种应用程序中首选的数据类型,并用作输入和输出的数据类型。有各种字符串操作,例如字符串搜索、子串生成、字符串剥离操作、字符串转换操作、字符串替换操作、字符串反转操作等等。查看下面的链接,了解如何在C/C++中使用字符串。
https://tutorialspoint.com/cplusplus/cpp_strings.htm
https://tutorialspoint.com/cprogramming/c_strings.htm
因此,如果我们问题的输入类似于S = ["00209", "00219", "00999", "00909"],则输出将为2,因为区号是“00”。
步骤
为了解决这个问题,我们将遵循以下步骤:
n := size of S ans := 0 m := size of S[0] for initialize i := 0, when i < m, update (increase i by 1), do: c := S[0, i] for initialize j := 0, when j < n, update (increase j by 1), do: if S[j, i] is not equal to c, then: return ans (increase ans by 1) return ans
示例
让我们看看下面的实现来更好地理解:
#include <bits/stdc++.h>
using namespace std;
int solve(vector<string> S){
int n = S.size();
int ans = 0;
int m = S[0].size();
for (int i = 0; i < m; i++){
char c = S[0][i];
for (int j = 0; j < n; j++){
if (S[j][i] != c){
return ans;
}
}
ans++;
}
return ans;
}
int main(){
vector<string> S = { "00209", "00219", "00999", "00909" };
cout << solve(S) << endl;
}输入
{ "00209", "00219", "00999", "00909" }输出
2
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP