c - 在C中替换字符串的元素
问题描述
Spinx 兄弟在东京都警察总部安放了一枚炸弹。很方便,他们留下了一个字符串 S(当然是加密的)作为拆除炸弹的钥匙,但还有更多。警方从他们之前与斯芬克斯兄弟的遭遇中推断出可能的解密。字符串中的一些字母需要根据解密模式替换为其他一些字母。解密后的字母有可能再次被解密/替换。您需要替换字符串中的每个字母,直到它无法进一步替换,以获得密钥。他们要求你尽快做到这一点,因为总部的炸弹随时都会爆炸。
输入
第一行的字符串 S (1 ≤ |S| ≤ 105) 仅由小写字母组成。下一行有一个整数 M (1 ≤ M ≤ 325),表示替换的次数。接下来的 M 行有两个间隔字符,ci 和 di,其中 di 是 ci 的替换。
输出
在所有字符替换后打印最终字符串。
笔记
保证没有循环替换。
输入
nineandeleven
5
n l
l u
u w
e a
a y
输出
wiwyywdywyvyw
我就是这样编码的。我不能接受超过 3 行的输入
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
char str[100000];
scanf("%s",str);
int M;
char x,y;
scanf("%d",&M);
for(int i=0;i<M;i++){
scanf("%c %c",&x,&y);
for(int j=0;j<strlen(str);j++){
if(str[j] == x) { str[j]=y;}
}
}
printf("%s",str);
return 0;
}
解决方案
scanf("%c %c",&x,&y);
改成
scanf(" %c %c",&x,&y);
多一个空间
因为当你输入“输入”
会将换行符(windows.linux 可能有点不同,就像\t\n
\n
你想知道谷歌一样)到你的缓冲区
当你使用%c
最后阅读时,你推动而不是跳跃空间'\n'
,,'\t'
当您在前面添加空间时%c
scanf
将在读取缓冲区之前跳转空间,'\n'
然后'\t'
将通过键盘正确输入
推荐阅读
- daml - 显示 DAML 合约的“协议”字段
- ios - 用相交的 UIBezierPath 屏蔽 UIEffectView
- sonarqube - 在 Travis-CI 构建中,如何仅在主分支上调用 SonarQube
- amazon-web-services - 从 lambda(节点 js)发布 SNS 消息导致超时错误
- .net - 动态 crm 365 web api 身份验证,获得令牌,但我得到对实体 C# 的未经授权的调用。净核
- r - R:单纯形错误:下标分配中不允许使用 NA
- javascript - 使用上下文菜单单击 DataTable 行
- apache-spark - Spark/Parquet 分区是否保持有序?
- java - 在 Eclipse IDE 中设置 Java Card 平台版本
- css - 实现助手文本语音气泡框箭头