字母

《算法笔记》 2.5小节 问题 D: 习题6-12 解密

孤街浪徒 提交于 2019-11-28 13:27:11
题目描述 有一行电文,已按如下规律译成密码: A-->Z a-->z B-->Y b-->y C-->X c-->x ...... ...... 即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求根据密码译回原文,并输出。 输入 输入一行密文 输出 解密后的原文,单独占一行。 样例输入 ZYX123zyx 样例输出 ABC123abc 这道题目的难点在于如何表达出转换密文的式子。 大家需要首先知道A和a的ascll码分别是65和97。 当然可能还有更简单的方法,大家借鉴一下我这个就可以了。 #include<stdio.h> #include<string.h> int main() { char str[10]; char c; gets(str); int len=strlen(str); for(int i=0;i<len;i++){ if(str[i]>='A'&&str[i]<='Z'){ c=64+26-(str[i]-64)+1;//直接表达出要交换的字母的ASCLL码值,然后再将其赋值给char型的str[i] str[i]=c; } if(str[i]>='a'&&str[i]<='z'){ c=96+26-(str[i]-96)+1; str[i]=c; //大家还可以将这两段if代码合成一个大的if(str[i]>='A

P1061 Jam的计数法

北城以北 提交于 2019-11-28 13:04:51
题目描述 JamJam J a m是个喜欢标新立异的科学怪人。他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩。 在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文字母按原先的顺序,排在前面的字母小于排在它后面的字母。我们把这样的“数字”称为 JamJam J a m数字。在 JamJam J a m数字中,每个字母互不相同,而且从左到右是严格递增的。每次, JamJam J a m还指定使用字母的范围,例如,从 22 2到 1010 1 0,表示只能使用 b,c,d,e,f,g,h,i,j{b,c,d,e,f,g,h,i,j} b , c , d , e , f , g , h , i , j这些字母。如果再规定位数为 55 5,那么,紧接在 JamJam J a m数字“ bdfijbdfij b d f i j”之后的数字应该是“ bdghibdghi b d g h i”。(如果我们用 UU U、 VV V依次表示 JamJam J a m数字“ bdfijbdfij b d f i j”与“ bdghibdghi b d g h i”,则 U<VU<V U < V,且不存在 JamJam J a m数字 PP P,使 U<P<VU<P<V U < P < V)。 你的任务是:对于从文件读入的一个 JamJam J a

c语言练习6——用*号输出字母C的图案

一个人想着一个人 提交于 2019-11-28 08:11:02
#include<stdio.h> #include<stdlib.h> /*题目:用*号输出字母C的图案*/ int main() { system("color 1F"); // 设定显示框为蓝底白字 system("mode con cols=80 lines=30"); //固定显示框尺寸 /******************************************程序主体分割线(顶部)*************************/ //while(1){ printf(" * * \n"); printf(" * * \n"); printf(" * * \n"); printf(" *\n"); printf(" *\n"); printf(" *\n"); printf(" *\n"); printf(" *\n"); printf(" *\n"); printf(" *\n"); printf(" * *\n"); printf(" * *\n"); printf(" * *\n"); //} /******************************************程序主体分割线(底部)***************************/ return 0; } 来源: https://www.cnblogs.com

【模板】 ac自动机

最后都变了- 提交于 2019-11-28 04:16:17
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<queue> 5 #define maxn 5000000+10 6 using namespace std; 7 char str[maxn*2]; 8 struct node{ 9 int fail;//失配指针; 10 int cnt;//单词出现的次数; 11 int next[62];// 此节点的下一个(儿子)节点; 12 }trie[maxn];//节点结构体; 13 int k=0,ans=0; 14 queue<int> q;//队列:建失配指针使用; 15 void build_trie(int id,char *s)//id表示第几个结点,即所有字符串从第0个节点开始向下建;*s即表示这个字符串; 16 { 17 int len=strlen(s);//该字符串的长度;(相当于字符串最后一个字符的深度) 18 int j=0; 19 for(int i=0;i<len;i++){ 20 j=s[i]-'a'; 21 if(trie[id].next[j]==0)/*若此字母未出现在当前位置的下一深度*/ 22 { 23 trie[id].next[j]=++k;//当前节点对于j字母节点的位置;即j字母的节点序号;

917,仅仅反转字母(简单)

本小妞迷上赌 提交于 2019-11-28 01:06:05
给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。 示例 1: 输入:"ab-cd" 输出:"dc-ba" 示例 2: 输入:"a-bC-dEf-ghIj" 输出:"j-Ih-gfE-dCba" 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-only-letters 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 普通方法: 由题意得知这是一个操作字符串的题目。   关于字符串,python有python自己的方法,如判断是否为字母的isalpha(),而排除语言,其他语言可以通过ASCLL码的次序,A-Z是65-90,a-z是97-122。   那么回归本题,不考虑空间复杂度,最简单的方法就是   1,另起一个字符串,   2,for循环字符串,将字符串中字母添加到新字符串中。   3,将新字符串反转,替换原来的字符串中字母部分,长度应该是一样的。 代码如下: class Solution: def reverseOnlyLetters(self, S): str1 = '' for i in S: if i.isalpha(): str1 += i str1 = str1[::-1] str2 = '' count = 0

C Primer Plus (第五版) 第六章 编程练习 答案

一曲冷凌霜 提交于 2019-11-27 20:12:48
1. 编写一个程序,创建一个具有26个元素的数组,并在其中存储26个小写字母。并让该程序显示该数组的内容。 // 方法1 #include <stdio.h> int main(void) { char letter[26]; char ch; int i; for (i = 0,ch = 'a'; i < 26; ch++,i++) letter[i] = ch; for (i = 0; i < 26; i++) printf("%c",letter[i]); printf("\n"); return 0; } // 方法2 #include <stdio.h> int main(void) { char letter[26]; int i; for (i = 0; i < 26;i++) letter[i] = 'a' + i; for (i = 0; i < 26; i++) printf("%c",letter[i]); printf("\n"); return 0; } 输出: 2. 使用嵌套循环产生下列图案: S SS SSS SSSS SSSSS #include <stdio.h> int main(void) { int row,col; for (row = 0; row < 5; row++) { for (col = 0; col <= row; col++

C++进行字母大小写转换

*爱你&永不变心* 提交于 2019-11-27 16:44:33
#include <iostream> #include <Windows.h> #include <string> using namespace std; int main(void) { char x; cout << "请输入一个字符:"; cin >> x;    //利用ASCII码表中的字符排列规律进行字母的大小写转换 if (x >= 'a' && x <= 'z') { //小写字母 x = x - 'a' + 'A'; } else if (x >= 'A' && x <= 'Z') { x = x - 'A' + 'a'; } cout << x << endl; system("pause"); return 0; } 来源: https://www.cnblogs.com/tanghaiyong/p/11370633.html

leecode算法《242. 有效的字母异位词》详解有注释,简单明了。

我的梦境 提交于 2019-11-27 15:44:16
leecode算法《242. 有效的字母异位词》详解有注释,简单明了。 原题内容 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true 示例 2: 输入: s = “rat”, t = “car” 输出: false 说明: 你可以假设字符串只包含小写字母。 进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/valid-anagram 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 审题: 算法: 类似于计数排序 字母一定是在a-z之间 一次创建一个长度为26的数组用来计数, 循环第一个字符串,出现的字符加一 循环第二个字符串,出现的字符减一 这种算法也类似于哈希表 代码: public boolean isAnagram ( String s , String t ) { if ( s . length ( ) != t . length ( ) ) { return false ; } int [ ] counter = new int [ 26 ] ; for ( int i = 0 ;

java 基础

喜你入骨 提交于 2019-11-27 15:08:30
关于标识符 标识符:指程序中,我们自己定义的内容,比如类的名字、方法名字和变量的名字等。 命令规则:硬性要求 可以包含英文字母(区分大小写)、0-9数字、$和_ 不能以数字开头 不能是关键字 命令规范 软性建议 类名规范:首字母大写,后面每个单词首写字母大写 变量名规范:首字母小写,后面每个单词首字母大写 方法名规范:桶变量名 来源: https://www.cnblogs.com/mantishell/p/11367682.html

康托展开

一个人想着一个人 提交于 2019-11-27 14:10:45
直接进入正题。 康托展开 Description 现在有"ABCDEFGHIJ”10个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的? Input 第一行有一个整数n(0<n<=100000); 随后有n行,每行是一个排列; Output 输出一个整数m,占一行,m表示排列是第几位; Sample Input 3 ABCDEFGHIJ HGEBFACDJI GDEDHJBXIA S ample Output 1 2803322 1911924 其实思路可能不用说也能想出来 。 设总长度为len,枚举每一个字母,找它后面比它小的字母个数,记为k。那么每一位的答案就是k*(len-i)!。 下面给出草率证明: 先举个栗子,比如说一个字符串BACED。 (样例太长懒得解释) 第一位B找到了A一个比它小的字母,说明这个字符串排在所有以A开头的字符串之后(显然共有4!个),所以B对最终答案的贡献是4!。 第二位A没找到比它小的字母,说明这个字符是所有以B开头的字符串中第二位最小的,所以B对最终答案没有贡献。 第三位C 没找到比它小的字母,说明这个字符是所有以BA开头的字符串中第二位最小的, 所以C对最终答案没有贡献。 第四位E找到了E一个比它小的字母,说明这个字符串排在所有以BACD开头的字符串之后(显然共有1!个),所以E对最终答案的贡献是1!。