hdu 1075 map的使用 字符串截取的常用手段 以及string getline 使用起来的注意事项

首先说字符串的截取套路吧 用坐标一个一个的输入

用遍历的方式逐个去检查字符串中的字符是否为符合的情况 如果是的话 把该字符放入截取string 中 让后坐标前移

如果不是的话 截取结束 坐标初始化

然后是map的使用 头文件为 <map>

定义的话 map<类型,类型> 变量名

对于map中值的传入的话 直接用数组的形式就好

这里由于有搜索 所以还要用到find函数   如果找不到的话 find返回值为end()

再就是string 类型变量的使用要注意 string类型的变量在下次对其更改之前会自动释放自己的内容

题目

Problem Description

Ignatius is so lucky that he met a Martian yesterday. But he didn‘t know the language the Martians use. The Martian gives him a history book of Mars and a dictionary when it leaves. Now Ignatius want to translate the history book into English. Can you help him?

Input

The problem has only one test case, the test case consists of two parts, the dictionary part and the book part. The dictionary part starts with a single line contains a string "START", this string should be ignored, then some lines follow, each line contains two strings, the first one is a word in English, the second one is the corresponding word in Martian‘s language. A line with a single string "END" indicates the end of the directory part, and this string should be ignored. The book part starts with a single line contains a string "START", this string should be ignored, then an article written in Martian‘s language. You should translate the article into English with the dictionary. If you find the word in the dictionary you should translate it and write the new word into your translation, if you can‘t find the word in the dictionary you do not have to translate it, and just copy the old word to your translation. Space(‘ ‘), tab(‘\t‘), enter(‘\n‘) and all the punctuation should not be translated. A line with a single string "END" indicates the end of the book part, and that‘s also the end of the input. All the words are in the lowercase, and each word will contain at most 10 characters, and each line will contain at most 3000 characters.

Output

In this problem, you have to output the translation of the history book.

Sample Input

START
from fiwo
hello difh
mars riwosf
earth fnnvk
like fiiwj
END
START
difh, i‘m fiwo riwosf.
i fiiwj fnnvk!
END

Sample Output

hello, i‘m from mars.
i like earth!

先上代码

#include<stdio.h>
#include<map>
#include<string>
#include<iostream>
using namespace std;
int main()
{
 string str,b,d;
 char s[60];
 int i,begin,end,j;
 map<string,string> fuck;
 cin>>str;
 while(cin>>str&&str!="END")
 {
//  if(str=="END") break;
  cin>>b;
  fuck[b]=str;
 }
 cin>>str;

getchar();///  这里尤其要注意  在用getline和scanf(%c)有点像 对于事先输入的值回车要getchar

j=0;
 while(getline(cin,str)&&str!="END")
 {
//  if(str=="END") break; 
//        cout<<str<<endl;
  for(i=0;i<str.length();i++)
  {
   if(str[i]>=‘a‘&&str[i]<=‘z‘)
            {
               s[j++]=str[i];//  由于string的自动释放  所以用s定义为数组比较好
 //     cout<<s[j-1]<<endl; 
            }
            else
   {
    s[j]=‘\0‘;
   // cout<<s<<endl;
    j=0;
    d=s;
    if(fuck.find(d)!=fuck.end())
    {
     cout<<fuck[d];
    }
    else cout<<d;
    cout<<str[i];
   }
  }
  cout<<endl;
 }
 return 0;
}

时间: 2024-10-12 22:28:01

hdu 1075 map的使用 字符串截取的常用手段 以及string getline 使用起来的注意事项的相关文章

HDU 1075 map or 字典树

What Are You Talking About Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/204800 K (Java/Others)Total Submission(s): 12773    Accepted Submission(s): 4069 Problem Description Ignatius is so lucky that he met a Martian yesterday. But

hdu 1075 map

题意:给一个字典,和一句话,翻译一下 奇怪的格式 Sample Input START from fiwo hello difh mars riwosf earth fnnvk like fiiwj END START difh, i'm fiwo riwosf. i fiiwj fnnvk! END Sample Output hello, i'm from mars. i like earth! 1 #include<cstdio> 2 #include<iostream> 3

hdu 4018 Parsing URL(字符串截取)

题目 以下引用自百度百科: sscanf 的相关用法 头文件:#include<stdio.h> 1. 常见用法. 1 2 3 charbuf[512]; sscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中! printf("%s\n",buf); 结果为:123456 2. 取指定长度的字符串.如在下例中,取最大长度为4字节的字符串. 1 2 sscanf(&

&#8203;老男孩教育每日一题-第98天-shell知识点:shell脚本中字符串截取的常用用法?

答案参考: 假设有变量var=http://www.oldboyedu.com/123.htm. 1. # 号截取,删除左边字符,保留右边字符. 变量: var=http://www.oldboyedu.com/123.htm echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符 即删除 http:// 结果是 :www.oldboyedu.com/123.htm 2. ## 号截取,删除左边字符,保留右边字符. 变量

字符串截取和常用函数

可以使用len(字符串变量)获取字符串的字节长度,其中英文占1个字节长度,中文占用3个字节长度 可以使用变量名[n]获取到字符串第n+1个字节,返回这个字节对应的Unicode码值(uint8类型).注意n的取值范围是[0,长度) 可以使用变量名[n:m]取出大于等于n小于m的字符序列 n和m都可以省略,省略时认为n为0,m为长度 因为中文占用三个字节,如果没有把中文完整取出,会出现乱码 可以通过把字符串转换为切片获取长度,并获取里面内容. 也可以直接使用for循环结合range获取 func

C# 之 字符串截取--Split

        上一篇博客<C# 之 字符串截取--Substring> 介绍了Substring函数,同时实现将"所属机构名称/教师姓名/课程类型/课程名称"中的所属机构名称,教师姓名,课程类型,课程名称分别截取出来.今天再给大家介绍一种字符串截取的函数Split. String.Split方法:返回的字符串数组包含此实例中的子字符串(由指定 Unicode 字符数组(separator)的元素分隔). String.Split方法的重载方法有六种类型,但是我觉得都大同小

【freemaker】之文本,html文本,去除空格,字母大小写,循环数组,字符串截取,map取值,遍历map

测试代码 @Test public void test06(){ try { root.put("emp", "<span color='red'>你好张三</span>"); freemakerUtil.print(root, "06.ftl"); freemakerUtil.fprint(root, "06.ftl", fn+"06.html"); } catch (Except

HDU 1075 What Are You Talking About (map解法+Trie解法)

HDU 1075 What Are You Talking About (map解法+Trie解法) ACM 题目地址: HDU 1075 What Are You Talking About 题意: 给出一个"翻译-原文"的对应表,然后给出句子,要把句子中的原文都翻译出来. 分析: 可以用map赤裸裸地做,但是比较花费时间,虽然这题时间给了5s,map解法是能过的. 不过Trie解法500+ms,果然Trie字典树才是正解啊. Trie入门题. 另外发现ios_base::sync_

HDU 1075 What Are You Talking About Trie题解

翻译火星语,不过火星语也是使用英文单词的,就是把一个单词对应到另外一个单词. 可以使用map, 使用二分,方法很多. 不过最快的应该都是Trie解法了. 把火星语挂在Trie树中,然后在叶子节点增加一个string容器,装英语单词. 查找的时候,找到了出现在Trie中的火星语,就返回string就可以了. #include <stdio.h> #include <string> #include <string.h> using namespace std; const