华为机试

【华为机试练习】字符个数统计

回眸只為那壹抹淺笑 提交于 2020-01-26 13:21:09
题目描述 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。 输入描述: 输入N个字符,字符在ACSII码范围内。 输出描述: 输出范围在(0~127)字符的个数。 解法(C语言版): #include<stdio.h> #include<stdlib.h> int main() { char ch; int flag[128] = {0}; int i, count = 0; while((ch = getchar()) != '\n') { i = (int)ch; if(i >= 0 && i <= 127 && flag[i] == 0) { count++; flag[i] = 1; } } printf("%d\n", count); return 0; } 来源: 51CTO 作者: Yuanmes 链接: https://blog.51cto.com/13614527/2468422

【华为机试练习】提取不重复的整数

随声附和 提交于 2020-01-26 12:56:11
题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺序,返回一个不含重复数字的新的整数 解法(C语言版): #include<stdio.h> int main() { int n, m, i, j = 0; int temp[10], flag[10] = {0}; scanf("%d", &n); while(n ) { i = n % 10; if(flag[i] == 0) { temp[j++] = i; flag[i] = 1; } n /= 10; } for(i = 0; i < j; ++i) printf("%d", temp[i]); return 0; } 来源: 51CTO 作者: Yuanmes 链接: https://blog.51cto.com/13614527/2468414

华为机试:句子逆序

做~自己de王妃 提交于 2020-01-25 07:24:25
题目描述 将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I” 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符 接口说明 /** * 反转句子 * * @param sentence 原句子 * @return 反转后的句子 */ public String reverse(String sentence); 输入描述: 将一个英文语句以单词为单位逆序排放。 输出描述: 得到逆序的句子 示例1 输入 I am a boy 输出 boy a am I Java:要求了接口名称和输入输出 1 import java.util.Scanner; 2 3 public class Main { 4 5 /** 6 * 反转句子 7 * 8 * @param sentence 原句子 9 * @return 反转后的句子 10 */ 11 public static String reverse(String sentence){ 12 String[] s = sentence.split(" "); 13 String[] end = new String[s.length]; 14 String ends=""; 15 for(int i = s.length - 1; i>=0;i--){ 16 if(i ==

华为机试-人民币转换

流过昼夜 提交于 2020-01-23 19:17:00
题目描述 考试题目和要点: 1、中文大写金额数字前应标明“人民币”字样。中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。(30分) 2、中文大写金额数字到“元”为止的,在“元”之后,应写“整字,如¥ 532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。(30分) 3、阿拉伯数字中间有“0”时,中文大写要写“零”字,阿拉伯数字中间连续有几个“0”时,中文大写金额中间只写一个“零”字,如¥6007.14,应写成“人民币陆仟零柒元壹角肆分“。( 输入描述: 输入一个double数 输出描述: 输出人民币格式 示例1 输入 151121.15 输出 人民币拾伍万壹仟壹佰贰拾壹元壹角伍分Java程序代码 import java.util.Scanner; /** * 人民币转换 * * @author LiJian * */ public class Main { static char[] danWei = { '亿', '万', '仟', '佰', '拾', '元', '角', '分' }; static char[] number = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; public static void main(String[]

【华为机试练习】进制转换

℡╲_俬逩灬. 提交于 2020-01-16 17:29:00
题目描述 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 ) 输入描述: 输入一个十六进制的数值字符串。 输出描述: 输出该数值的十进制字符串。 解法(C语言版): #include<stdio.h> #include<math.h> int hex2dec(char hex) { if(hex >= '0' && hex <= '9') return hex - '0'; else if(hex >= 'A' && hex <= 'F') return hex - 55; else return -1; } char *dec2str(int dec) { int i, j; char str[100] = {0}; char restr[100] = {0}; i = 0; do { restr[i++] = dec % 10 + '0'; dec /= 10; }while(dec); j = 0; i = i - 1; while(i >= 0) str[j++] = restr[i--]; return str; } int main() { char instr[100] = {0}; int len, dec, tmp, i, j; while(gets(instr)) { dec = 0; len = strlen(instr); for

【华为机试练习】字符串分隔

♀尐吖头ヾ 提交于 2020-01-16 15:03:45
题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述: 输出到长度为8的新字符串数组 解法(C语言版): #include<stdio.h> #include<string.h> char *outputstr(char *in, char *out) { int i; for(i = 0; i < 8; ++i) { if(in[i] != NULL) out[i] = in[i]; else out[i] = '0'; } return out; } int main() { char instr[100] = {0}; char outstr[9] = {0}; while(gets(instr)) { char *p = instr; while(*p != '\0') { printf("%s\n", outputstr(p, outstr)); p += 8; } memset(instr, 0, 100); } return 0; } 来源: 51CTO 作者: Yuanmes 链接: https://blog.51cto.com/13614527/2467260

【华为机试练习】计算字符个数

北战南征 提交于 2020-01-16 13:42:14
题目描述 写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。 输入描述: 第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符。 输出描述: 输出输入字符串中含有该字符的个数。 解法(C语言版): #include<stdio.h> #include<string.h> #include<math.h> int main() { char str[10000]; char ch; int n, i, cnt; gets(str); ch = getchar(); cnt = 0; if(strlen(str) != 0) for(i = 0; str[i] != '\0'; ++i) if((str[i] == ch) || (abs(str[i] - ch) == 32)) cnt++; printf("%d\n", cnt); return 0; } 来源: 51CTO 作者: Yuanmes 链接: https://blog.51cto.com/13614527/2467166

【华为机试练习】明明的随机数

若如初见. 提交于 2020-01-16 13:12:08
题目描述 明明先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉。然后再把这些数从小到大排序。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据)。 输入描述: 输入多行,先输入随机整数的个数,再输入相应个数的整数 输出描述: 返回多行,处理后的结果 思路:可以转换思路,先通过快速排序算法对数据进行排序,然后再有序表中进行去重操作。 解法(C语言版): #include<stdio.h> int Partition(int array[], int low, int high) { int pivot = array[low]; while(low < high) { while(low < high && array[high] >= pivot) --high; array[low] = array[high]; while(low < high && array[low] <= pivot) ++low; array[high] = array[low]; } array[low] = pivot; return low; } void QuickSort(int array[], int low, int high) { if(low < high) { int pivotpos =

【华为机试练习】字符串最后一个单词的长度

你离开我真会死。 提交于 2020-01-16 10:15:50
题目描述 计算字符串最后一个单词的长度,单词以空格隔开。 输入描述: 一行字符串,非空,长度小于5000。 输出描述: 整数N,最后一个单词的长度。 解法(C语言版): #include<stdio.h> #include<string.h> int main() { char str[5000]; int i, n, len; gets(str); len = strlen(str); n = 0; if(len != 0) for(i = len-1; (str[i] != ' ') && (i >= 0); --i) n++; printf("%d\n", n); return 0; } 来源: 51CTO 作者: Yuanmes 链接: https://blog.51cto.com/13614527/2467162

华为机试

夙愿已清 提交于 2019-12-12 19:53:42
题目描述 一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。 给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列。 输入描述: 输入一个string型基因序列,和int型子串的长度 输出描述: 找出GC比例最高的子串,如果有多个输出第一个的子串 示例1 输入 AACTGTGCACGACCTGA 5 输出 GCACG import java.util.Scanner; public class Main{ public static void main(String args[]){ Scanner scanner=new Scanner(System.in); String a=scanner.nextLine(); int b=scanner.nextInt(); asd(a,b); } public static void asd(String str,int n){ int max=0; int begin1=0; for(int i=0;i<=str.length()-n;i++){ int count=0; for(int j