zoukankan      html  css  js  c++  java
  • ACM俱乐部 字符串

    数制转换分数: 2

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:59
    解决: 24

    标签

    • 进制转换

    题目描述

    求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。
    不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。

    输入格式

    输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。

    输出

    可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。

    样例输入

    4 123 10

    样例输出

    27

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 北京大学研究生复试上机真题
    •  
    •  
    •  1 #include <iostream>
       2 #include <string>
       3 #include <algorithm>
       4 using namespace std;
       5   string shuzi="0123456789ABCDEF";//用来 根据整数查找字符串中字符的位置
       6   int ch[128]={0};//根据字符存放该字符所对应的整数值
       7 long toshi(string str,int a)
       8 {
       9 int sum=0;
      10 for(int i=0;i<str.length();i++)
      11 {
      12   sum=sum*a+ch[str[i]];
      13 }
      14 return sum;
      15 }
      16 string change(int sum,int b)
      17 {
      18     string change="";
      19 if(sum==0)  change="0";//"0"不要忘掉
      20 while(sum>0)
      21 {
      22   change=change+shuzi[sum%b];
      23   sum=sum/b;
      24 }
      25 reverse(change.begin(),change.end());
      26 return change;
      27 }
      28 int main()
      29 {
      30   for(int i=0;i<10;i++)
      31  ch['0'+i]=i;
      32   for(int i=0;i<7;i++)
      33   {
      34       ch['A'+i]=10+i;
      35  ch['a'+i]=10+i;
      36   }
      37   int a,b;
      38   string str;
      39   while(cin>>a>>str>>b)
      40   {
      41        int sum=toshi(str,a);
      42   string cha=change(sum,b);
      43   cout<<cha<<endl;
      44   }
      45 }
    •  
    •  
    •  
    •  

















    统计单词分数: 1.5

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:95
    解决: 44

    标签

    • 字符串处理
    • 统计单词数

    题目描述

    编一个程序,读入用户输入的,以“.”结尾的一行文字,统计一共有多少个单词,并分别输出每个单词含有多少个字符。
    (凡是以一个或多个空格隔开的部分就为一个单词)

    输入格式

    输入包括1行字符串,以“.”结束,字符串中包含多个单词,单词之间以一个或多个空格隔开。

    输出

    可能有多组测试数据,对于每组数据,
    输出字符串中每个单词包含的字母的个数。

    样例输入

    hello how are you.

    样例输出

    5 3 3 3

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 华中科技大学究生复试上机真题
    •  
    •  
    •  1 #include <iostream>
       2 #include <string>
       3 using namespace std;
       4 int main()
       5 {
       6   string ss;
       7   while(getline(cin,ss))
       8   {
       9      int n=0;int sum=0;
      10 while(ss[n]!='.')
      11 {
      12    if(ss[n]==' ')
      13 if(sum!=0)
      14 {
      15   cout<<sum<<" ";
      16   sum=0;
      17 }
      18 if(ss[n]!=' ')
      19 sum++;
      20 n++;
      21 }
      22 cout<<sum<<endl;
      23   }
      24 }
    •  












    字符串的查找删除

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:2798

    解决:1101

    题目描述:

    给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。

    输入:

    输入只有1组数据。
    输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。

    输出:

    删除输入的短字符串(不区分大小写)并去掉空格,输出。

    样例输入:
    in#include int main(){printf(" Hi ");}
    样例输出:
    #cludetma(){prtf("Hi");}
    提示:

    注:将字符串中的In、IN、iN、in删除。

    来源:
    2009年北京航空航天大学计算机研究生机试真题


    天勤给出的答案是错的,没有考虑到“i      nwdqwd”的情况,应该先删空格,然后在删“in”

    这题我的代码天勤自己的OJ AC不了,九度的可以

     1  #include<iostream>
     2 
     3 #include<string>
     4 using namespace std;
     5  
     6      
     7 string low(string str)
     8 {
     9     for(int i=0;i<str.length();i++)
    10         if(str[i]<='Z'&&str[i]>='A') str[i]=str[i]+'a'-'A';
    11     return str;
    12 }
    13  
    14 int main()
    15 {
    16     int n=0;
    17     string s1,s2;
    18     getline(cin,s1);
    19     while(getline(cin,s2))
    20     {
    21          
    22        string temp=low(s1);
    23         int j=0;
    24         while(j<s2.length())
    25         {
    26             if(s2[j]==' ')
    27                 s2=s2.substr(0,j)+s2.substr(j+1,s2.length());
    28             else
    29                 j++;
    30         }
    31         j=0;
    32         while(j<s2.length())
    33         {
    34              if(low(s2.substr(j,s1.length()))==s1)
    35                 s2=s2.substr(0,j)+s2.substr(j+s1.length(),s2.length());
    36              else
    37                 j++;
    38         }
    39         cout<<s2<<endl;
    40     }
    41     return 0;
    42 }
    43 /**************************************************************
    44     Problem: 1168
    45     User: 2009declan
    46     Language: C++
    47     Result: Accepted
    48     Time:0 ms
    49     Memory:1520 kb
    50 ****************************************************************/














    最长&最短文本分数: 1.5

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:92
    解决: 43

    标签

    • 字符串处理
    • 字符串长度

    题目描述

    输入多行字符串,请按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。

    输入格式

    输入包括多行字符串,字符串的长度len,(1<=len<=1000)。

    输出

    按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。

    样例输入

    hello
    she
    sorry
    he

    样例输出

    he
    hello
    sorry

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 华中科技大学究生复试上机真题
    •  
    •  
    •  
    •  1 #include<iostream>
       2 #include<string>
       3 using namespace std;
       4 int main()
       5 {
       6 string s1[1000];
       7 int n=0;
       8 while(getline(cin,s1[n]))
       9 {
      10 n++;
      11 }
      12 int max=s1[0].length();
      13 int min=s1[0].length();
      14 for(int i=1;i<n;i++)
      15 {
      16 if(s1[i].length()>max) max=s1[i].length();
      17 if(s1[i].length()<min) min=s1[i].length();
      18 }
      19 for(int i=0;i<n;i++)
      20 {
      21 if(s1[i].length()==min) cout<<s1[i]<<endl;;
      22 }
      23 for(int i=0;i<n;i++)
      24 {
      25 if(s1[i].length()==max) cout<<s1[i]<<endl;;
      26 }
      27 return 0;
      28 }
      29  
    •  
    •  
    •  













    首字母大写分数: 1.5

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:95
    解决: 48

    标签

    • 字符串处理

    题目描述

    对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。
    在字符串中,单词之间通过空白符分隔,空白符包括:空格(' ')、制表符(' ')、回车符(' ')、换行符(' ')。

    输入格式

    输入一行:待处理的字符串(长度小于100)。

    输出

    可能有多组测试数据,对于每组数据,
    输出一行:转换后的字符串。

    样例输入

    if so, you already have a google account. you can sign in on the right.

    样例输出

    If So, You Already Have A Google Account. You Can Sign In On The Right.

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 北京大学研究生复试上机真题
    •  
    •  
    •  
    •  WS  :测试文件:/test0.out 结果:答案错误=======原因======当参考答案输出:wang Is A String-------时---------你的程序输出:Wang Is A String=================测试文件:/sample.out 结果:答案正确 
    •  想不通为什么会有第一个是小写的w的情况,估计是OJ错了
    • 天勤上面的答案没有考虑到标点符号 
    • 给出自己的代码
    •  1 #include<iostream>
       2 #include<string>
       3 using namespace std;
       4 int main()
       5 {
       6 string s;
       7 int n=0;
       8     while(getline(cin,s))
       9 {
      10 if(s[0]>='a'&&s[0]<='z')  s[0]=s[0]-('a'-'A');//先检查第一个
      11 for(int i=0;i<s.length()-1;i++)
      12 {
      13 if(s[i]<'A'||(s[i]>'Z'&&s[i]<'a')||s[i]>'z')
      14 if(s[i+1]>='a'&&s[i+1]<='z')
      15                       s[i+1]=s[i+1]-('a'-'A');
      16 }
      17 cout<<s<<endl;
      18 }
      19   return 0;
      20 }
    •  
    •  
    •  
    •  
    •  
    •  







     

    字符串的反码分数: 1.2

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:143
    解决: 47

    标签

    • 字符转换

    题目描述

    一个二进制数,将其每一位取反,称之为这个数的反码。下面我们定义一个字符的反码。如果这是一个小写字符,则它和字符'a’的距离与它的反码和字符'z’ 的距离相同;如果是一个大写字符,则它和字符'A’的距离与它的反码和字符'Z’的距离相同;如果不是上面两种情况,它的反码就是它自身。

    举几个例子,'a’的反码是'z’;'c’的反码是'x’;'W’的反码是'D’;'1’的反码还是'1’;'$'的反码还是'$'。
    一个字符串的反码定义为其所有字符的反码。我们的任务就是计算出给定字符串的反码。

    输入格式

    输入每行都是一个字符串,字符串长度不超过 80 个字符。如果输入只有!,表示输入结束,不需要处理。

    输出

    对于输入的每个字符串,输出其反码,每个数据占一行。

    样例输入

    Hello 
    JLU-CCST-2011 
    !

    样例输出

    Svool 
    QOF-XXHG-2011

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 吉林大学究生复试上机真题
    •  
    •  1 #include<iostream>
       2 #include<string>
       3 using namespace std;
       4 int main()
       5 {
       6 string s;
       7     while(getline(cin,s))
       8 {
       9 if(s[0]=='!'&&s.length()==1) break;//注意:只有一个“!”
      10   string s1=s;//目的是复制长度
      11   for(int i=0;i<s.length();i++)
      12   {
      13      if('a'<=s[i]&&s[i]<='z')
      14  s1[i]='z'-(s[i]-'a');
      15  else if('A'<=s[i]&&s[i]<='Z')
      16  s1[i]='Z'-(s[i]-'A');
      17  else s1[i]=s[i];
      18   }
      19   cout<<s1<<endl;
      20 }
      21   return 0;
      22 }
    •  






    统计字符分数: 1

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:138
    解决: 78

    标签

    • 字符串处理
    • 统计字符

    题目描述

    统计一个给定字符串中指定的字符出现的次数。

    输入格式

    测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串。注意这里的字符串包含空格,即空格也可能是要求被统计的字符之一。当读到'#'时输入结束,相应的结果不要输出。

    输出

    对每个测试用例,统计第1行中字符串的每个字符在第2行字符串中出现的次数,按如下格式输出:
    c0 n0
    c1 n1
    c2 n2
    ... 
    其中ci是第1行中第i个字符,ni是ci出现的次数。

    样例输入

    I
    THIS IS A TEST
    i ng
    this is a long test string
    #

    样例输出

    I 2
    i 3
      5
    n 2
    g 2

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 浙江大学研究生复试上机真题
    •  
    •  
    •  
    •  1 #include<iostream>
       2 #include<string>
       3 using namespace std;
       4 int main()
       5 {
       6 string a,b;
       7 while(getline(cin,a)&&(a[0]!='#'))//getline(cin,str)读取一行
       8 {
       9  getline(cin,b);
      10  int count[128]={0};//ASCII码有128种
      11  for(int i=0;i<b.length();i++)
      12     count[b[i]]++;
      13   for(int i=0;i<a.length();i++)
      14     cout<<a[i]<<" "<<count[a[i]]<<endl;
      15 }
      16   return 0;
      17 }
      18  





     
     
  • 相关阅读:
    第二章 Google guava cache源码解析1--构建缓存器
    第十一章 AtomicInteger源码解析
    JVM虚拟机(五):JDK8内存模型—消失的PermGen
    JVM虚拟机(四):JVM 垃圾回收机制概念及其算法
    Java中RunTime类介绍
    JVM虚拟机(三):参数配置
    ZooKeeperEclipse 插件
    zookeeper(五):Zookeeper中的Access Control(ACL)
    zookeeper(六):Zookeeper客户端Curator的API使用详解
    Java并发编程(九):拓展
  • 原文地址:https://www.cnblogs.com/xiaoyesoso/p/4271468.html
Copyright © 2011-2022 走看看