服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C++ 面试题翻译电话号码实例代码

C++ 面试题翻译电话号码实例代码

2021-05-08 16:38wtyvhreal C/C++

这篇文章主要介绍了C++ 面试题翻译电话号码实例代码的相关资料,需要的朋友可以参考下

C++ 面试题翻译电话号码实例代码

例如:

输入:OneTwoThree
输出:123

输入:OneTwoDoubleTwo
输出:1222

输入:1Two2
输出:ERROR

输入:DoubleDoubleTwo
输出:ERROR

有空格,非法字符,两个Double相连,Double位于最后一个单词 都错误。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream> 
#include <string>    
using namespace std;  
   
void process(string str)  
{  
  //各字符串的下标即为其对应的阿拉伯数字  
  char *ch[]={"zero","one","two","three","four","five","six","seven","eight","nine","double"};
  char *out[100];//存储结果集
 
  int f=0;
  int i,j,k; 
   
  string substr;  
  int len=str.length(); 
  int flag=0;//判断double出现
  int flag2=0;//判断内循环有无break
 
  for(i=0;i<len;i++)  
  
    if(flag2)
      break;
    else if(str[i]<97 || str[i]>122)//非字母字符
    {
      out[f++]="error";
      break;
    }
    else{
      //可以看出拼音最短为3个字符,最长为6个字符  
      for(j=i+2;j<len&&(j-i)<6;j++)  
      {  
        substr=str.substr(i,j-i+1);  
        if(!substr.compare(ch[10]))//出现double
        {
          if(i==len-6)//最后一个double
          {
            out[f++]="error";
            flag2=1;
            break;
          }else if(flag){//连续两个double
            out[f++]="error";
            flag2=1;
            break;
          }else
            flag=1;
        }
        else{
          for(k=0;k<10;k++) 
          {
            if(!substr.compare(ch[k]))  
            {  
              if(flag){
                out[f++]=ch[k];
                out[f++]=ch[k];
                flag=0;
                break;               
              }
              else{
                out[f++]=ch[k];  
                break;
              }
            
          }
        }
      
    }
  
   
  int flag3=0;//看有无error,默认没有error
  for(int r=0;r<f;r++){
    if(out[r]=="error")//有error
      flag3=1;
  }
 
  if(!flag3)
    for(r=0;r<f;r++)
      for(k=0;k<10;k++) 
      {
        if(out[r]==ch[k])  
          printf("%d",k);
      }
  else
    printf("error");
 
  printf("\n"); 
}  
   
void main() 
  string str;  
  while(getline(cin,str)) 
    process(str); 

C++ 面试题翻译电话号码实例代码

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

原文链接:http://blog.csdn.net/wtyvhreal/article/details/42554647

延伸 · 阅读

精彩推荐