华为机试

华为机试-统计大写字母个数

此生再无相见时 提交于 2020-03-27 10:23:54
题目描述 找出给定字符串中大写字符(即'A'-'Z')的个数 接口说明 原型:int CalcCapital(String str); 返回值:int 输入描述: 输入一个String数据 输出描述: 输出string中大写字母的个数 输入例子: add123#$%#%#O 输出例子: 1 Java代码实现 import java.util.Scanner; /** * 统计大写字母个数 * * @author WWJ * */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextLine()) { String string = sc.nextLine(); char[] arr = string.toCharArray(); int num = calcCapital(arr); System.out.println(num); } } private static int calcCapital( char[] arr) { int sum = 0; if (arr.length == 0) { return sum; } for ( int i = 0; i < arr.length; i++) {

Java-------华为机试-------字符串分隔

好久不见. 提交于 2020-03-07 06:11:10
题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述: 输出到长度为8的新字符串数组 输入例子: abc 123456789 输出例子: abc00000 12345678 90000000 解法1: 暴力: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { String str = in.nextLine(); int len = str.length(); int m = len / 8; // 最少可分割的组数 /* 下面嵌套循环,内层作用位分割为8个一组,外层循环确定组数 , “if”考虑特殊情况 */ for (int i = 0; i <= m; i++) { if (i * 8 == len) { // 特殊情况:len=8,16,24…… break; } for (int j = 0; j < 8; j++) { if (i * 8 + j < len)//

华为机试:素数伴侣

陌路散爱 提交于 2020-03-03 01:15:38
算法 // A_Niu26素数伴侣.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <cstring> #include <vector> using namespace std; vector<int> G[105]; int pre[105]; bool used[105]; bool dfs(int k) { for (int i = 0; i < G[k].size(); ++i) { if (used[G[k][i]] == 0) { used[G[k][i]] = 1; if (pre[G[k][i]] == 0 || dfs(pre[G[k][i]])) { pre[G[k][i]] = k; return true; } } else continue; } return false; } int main() { //求小于8000的所有质数 bool isprime[80000]; memset(isprime, 0, sizeof(isprime)); for (int i = 2; i <= 80000;i++) { int j; for (j = 2; j < i; j++) { if (i%j==0||j*j>i) { break;; } } /

华为机试:字符串分隔

社会主义新天地 提交于 2020-02-29 22:16:29
题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述: 输出到长度为8的新字符串数组 示例1 输入 abc 123456789 输出 abc00000 12345678 90000000 Java: 1 import java.util.Arrays; 2 import java.util.Scanner; 3 4 public class Main { 5 6 public static void main(String[] args) { 7 Scanner sc=new Scanner(System.in); 8 while(sc.hasNext()){ 9 String s = sc.nextLine(); 10 for(int i = 0; i < Math.ceil(s.length()/8.0);i++){ 11 if((i+1)*8>s.length()){ 12 String sub = s.substring(i*8, s.length()); 13 System.out.print(sub); 14 for(int j = 0; j < ((i+1)*8-s.length()) ;j++){ 15

华为机试 字符串分隔

耗尽温柔 提交于 2020-02-26 02:34:46
题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述: 输出到长度为8的新字符串数组 输入 abc 123456789 输出 abc00000 12345678 90000000 #include <iostream> #include <string.h> using namespace std; int main(){ string Array1,Array2; while(getline(cin,Array1)){ getline(cin,Array2); int length1=Array1.length(); int length2=Array2.length(); if( length1!=0){ if(length1%8!=0){ Array1.append(8-length1%8,'0'); } for(int i=0;i<Array1.length();i+=8){ cout<<Array1.substr(ii,8)<<endl; } } if(length2!=0){ if(length2%8!=0){ Array2.append(8-length2%8,'0'); } for(int i=0;i

牛客网华为机试【取近似值】

烈酒焚心 提交于 2020-02-17 20:14:44
文章目录 题目描述 题目分析 java 代码 结果 题目描述 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。 输入描述: 输入一个正浮点数值 输出描述: 输出该数值的近似整数值 示例 输入 5.5 输出 6 题目分析 看完题目描述,这就是一个四舍五入的题。 java 的 API 中,有一个 Math 实用类,已经实现了。 可以参考: java SE Math 实用类的基本使用 java 代码 import java . util . Scanner ; /** * Created by Feng on 2020/2/17 12:04 * CurrentProject's name is java8 */ public class Main { public static void main ( String [ ] args ) { Scanner input = new Scanner ( System . in ) ; while ( input . hasNextFloat ( ) ) { float num = input . nextFloat ( ) ; System . out . println ( Math . round ( num ) ) ; } } } 结果 来源: CSDN 作者:

【华为机试练习】字符串反转

前提是你 提交于 2020-02-01 23:36:43
题目描述 写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。例如: 输入描述: 输入N个字符 输出描述: 输出该字符串反转后的字符串 解法1(C语言版): #include<stdio.h> int main() { char str[1000]; int len, i, j; char temp; gets(str); len = strlen(str); for(i = 0, j = len - 1; i < j; ++i, --j) { temp = str[i]; str[i] = str[j]; str[j] = temp; } printf("%s\n", str); return 0; } 解法2(Python): str = input() print(str[::-1]) 来源: 51CTO 作者: Yuanmes 链接: https://blog.51cto.com/13614527/2468474

【华为机试练习】字串的连接最长路径查找

让人想犯罪 __ 提交于 2020-02-01 23:33:25
题目描述 给定n个字符串,请对n个字符串按照字典序排列。 输入描述: 输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。 输出描述: 数据输出n行,输出结果为按照字典序排列的字符串。 解法1(C语言): #include<stdio.h> #include<stdlib.h> #include<string.h> int Partition(char *A[], int low, int high) { char *pivot = (char *)malloc(100 * sizeof(char)); pivot = A[low]; while(low < high) { while(low < high && strcmp(A[high],pivot) >= 0) --high; A[low] = A[high]; while(low < high && strcmp(A[low],pivot) <= 0) ++low; A[high] = A[low]; } A[low] = pivot; return low; } void QuickSort(char *A[], int low, int high) { if(low < high) { int pivotpos = Partition(A, low,

【华为机试练习】句子逆序

萝らか妹 提交于 2020-01-28 17:41:43
题目描述 将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I” 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符 输入描述: 将一个英文语句以单词为单位逆序排放。 输出描述: 得到逆序的句子 解法1(C语言): #include<stdio.h> #include<string.h> int main() { char str[1000]; char *p; gets(str); while(p = strrchr(str, ' ')){ printf("%s ", p + 1); *p = '\0'; } printf("%s", str); return 0; } 解法2(Python): stc = input() lst = stc.split() for x in lst[::-1]: print(x, end = ' ') 来源: 51CTO 作者: Yuanmes 链接: https://blog.51cto.com/13614527/2468517

【华为机试练习】数字颠倒

北城余情 提交于 2020-01-27 12:32:16
题目描述 输入一个整数,将这个整数以字符串的形式逆序输出 程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001 输入描述: 输入一个int整数 输出描述: 将这个整数以字符串的形式逆序输出 解法(C语言版): #include<stdio.h> int main() { int n, i; scanf("%d", &n); if(n == 0) printf("%d\n", n); else { while(n != 0) { printf("%d", n % 10); n /= 10; } } return 0; } 来源: 51CTO 作者: Yuanmes 链接: https://blog.51cto.com/13614527/2468471