华为机试2

来源:互联网 发布:c语言中预处理命令 编辑:程序博客网 时间:2024/06/04 19:04

http://blog.csdn.net/xcbeyond/article/details/45627247

http://blog.csdn.net/gycool21/article/details/52679521

22---字符串分割

链接:https://www.nowcoder.com/questionTerminal/fa2e02625a8541beb2309fcb7ab31e5b来源:牛客网/* * 连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组, 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 首先输入一个整数,为要输入的字符串个数。 例如: 输入:2       abc       12345789 输出:abc00000       12345678       90000000 * */ /* * 关键思路:对字符串长度去余并分析两种情况,利用StringBuilder的appen()方法添0 * */ import java.util.Scanner; public class StringSplit {     public static void main(String[] args) {        Scanner in = new Scanner(System.in);        while(in.hasNext()){            int n = Integer.parseInt(in.nextLine());            for(int i = 0 ; i < n ; i++){                String str = in.nextLine();                strSplit(str);            }        }    }     private static void strSplit(String str) {        if(str == null){            return;        }        int a = str.length() % 8;        StringBuilder sb = new StringBuilder(str);        if(a != 0){            for(int i = 8-a ; i > 0 ; i--){                sb.append('0');            }        }        str = sb.toString();        for(int i = 0 ; i < str.length() ; i+=8){            System.out.println(sb.substring(i, i+8));        }             } }

23--字符逆序

链接:https://www.nowcoder.com/questionTerminal/cc57022cb4194697ac30bcb566aeb47b
来源:牛客网

将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。 如:输入“I am a student”,输出“tneduts a ma I”。

 

 

 
输入参数:

inputString:输入的字符串

 


返回值:

输出转换好的逆序字符串

 

 


输入描述:

输入一个字符串,可以有空格



输出描述:

输出逆序的字符串

示例1

输入

I am a student

输出

tneduts a ma I

import java.util.Scanner;import java.util.Stack;//有意思public class Main{    public static void main(String[] args){        Scanner scan = new Scanner(System.in);        while(scan.hasNext()){            String str = scan.nextLine();            Stack sta = new Stack();            for(char ch:str.toCharArray()){                sta.push(ch);            }            while(!sta.empty()){                System.out.print(sta.pop());            }        }    }}

24--求最小公倍数

链接:https://www.nowcoder.com/questionTerminal/22948c2cad484e0291350abad86136c3
来源:牛客网

正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。


输入描述:

输入两个正整数A和B。



输出描述:

输出A和B的最小公倍数。

示例1

输入

5 7

输出

35

链接:https://www.nowcoder.com/questionTerminal/22948c2cad484e0291350abad86136c3来源:牛客网import java.util.*;//两数最小公倍数等于两数乘积除以两数的最大公约数public class Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        while(sc.hasNext()) {            int A=sc.nextInt();            int B=sc.nextInt();            int result=A*B;            result=result/getYinShu(A,B);            System.out.println(result);            }        }    public static int getYinShu(int m,int n){        int i=m;            while((m%i!=0)||(n%i!=0)){             i--;            }         return i;    }    }

25----在字符串中找出连续最长的数字串

链接:https://www.nowcoder.com/questionTerminal/2c81f88ecd5a4cc395b5308a99afbbec
来源:牛客网

输入描述:

输入一个字符串。



输出描述:

输出字符串中最长的数字字符串和它的长度。如果有相同长度的串,则要一块儿输出,但是长度还是一串的长度

示例1

输入

abcd12345ed125ss123058789

输出

123058789,9

import java.util.*;public class Main{    public static void main(String[] args) {         Scanner scan=new Scanner(System.in);        while(scan.hasNext())        {            String str1="";            String str=scan.nextLine();            for(char ch:str.toCharArray()){                //将不是数字的字符全部变成a                if(ch>='0' && ch<='9'){                    str1+=ch;                }else{                    str1+="a";                }            }            //按a分割            String[] strs=str1.split("a");            int max=0;//记录最长的连续数字串的长度            for(int i=0;i<strs.length;i++){                max=strs[i].length()>max?strs[i].length():max;            }            for(int i=0;i<strs.length;i++){                if(strs[i].length()==max)                    System.out.print(strs[i]);            }            System.out.println(","+max);        }    }}

26----字符串去掉重复的字符

描述:
运行时间限制
内存限制:

滤除输入字符串中的重复出现的字符,只保留第一个

10 Sec

无限制

输入:字符串,长度小于1000输出:

字符串

样例输入:12222aab2样例输出:
12ab

import java.util.LinkedHashSet;import java.util.Scanner;public class Main{    public static void main(String[] args) {        Scanner input = new Scanner(System.in);        String text = input.nextLine();        System.out.print(filter(text));   input.close();    }    public static String filter(String s){        String result =  "";        LinkedHashSet<String> temp = new LinkedHashSet<String>();        int len = s.length();        if(len<1000) {            for(int i=0;i<s.length();i++){                temp.add(""+s.charAt(i));            }            for(String ch :temp){                result += ch;            }        }else            result = "The string is too long!!!";        return result;    }

27---输入字符串,提取字符串串中大写字母,注意字符串中可能含有空格等其他字符。

 样例输入:9,AUStralia
     样例输出:AUS

package huawei;  import java.util.*;  public class Main {      public static void main(String args[]) {          Scanner cin = new Scanner(System.in);          String string = cin.nextLine();          System.out.println(FindUpper(string));      }      public static String FindUpper(String str) {          String out = "";          char[] charArray = str.toCharArray();          for (int i = 0; i < charArray.length; i++) {              if (charArray[i] <= 90 && charArray[i] >= 65) {                  out = out + charArray[i];              }          }          return out;      }  }  

28---回文数字判断。

题目描述:

    有这样一类数字,他们顺着看和倒着看是相同的数,例如:121,656,2332等,这样的数字就称为:回文数字。编写一个函数,判断某数字是否是回文数字。

    要求实现方法:

public String isPalindrome(String strIn);

【输入】strIn: 整数,以字符串表示;

【返回】true: 是回文数字;

              false: 不是回文数字;

【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

package com.xcbeyond;    import java.util.Scanner;    /**  * @author xcbeyond  * 2015-5-10下午03:46:56  *4、回文数字判断。  *题目描述:  *  有这样一类数字,他们顺着看和倒着看是相同的数,例如:121,656,2332等,这样的数字就称为:  *  回文数字。编写一个函数,判断某数字是否是回文数字。  */  public class IsPalindrome {      public static void main(String[] args) {          System.out.print("请输入一个回文数字:");          Scanner console  = new Scanner(System.in);          String numStr = console.nextLine();          if(isPalindrome(numStr)) {              System.out.println(numStr+"是回文数字!");          }else{              System.out.println(numStr+"不是回文数字!");          }                }            public static boolean isPalindrome(String str){          boolean result = false;          for(int i = 0 ;i<str.length()/2-1;i++) {              if(str.charAt(i) == str.charAt(str.length()-1-i)) {                  result = true;              }          }                    return result;      }    }  

29--- 计算整数各个数位之和 

描述要求使用递归实现,计算整数各个数位之和。

举例: 123 --> 1+2+3 = 6

运行时间限制无限制 

内存限制无限制 

输入: 0xff ff ff ff以内的整数

输出: NA

样例输入: 123 

样例输出: 6 


package com.xcbeyond;  /**  *   * @author xcbeyond  * @date 2015/05/12 15:23:16  */  public class Demo36 {      public static void main(String[] args) {          int num = 123;          System.out.println(bitSum(num));      }      public static int bitSum(int num) {          int res = 0;          if(num<10) {              res = num;          }else {              res = num%10 + bitSum(num/10);          }          return res;                }  }  


30---数列求和

编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double

1+1/2!+ .... +1/n!

输出保留5位小数。

下面是一些合理的表达式的例子:

Input         5                

Output      1.71667   


package com.xcbeyond;    public class Demo35 {      public static void main(String[] args) {          System.out.println(resutl(5));      }            public static double resutl(int n) {          double res = 0.0;          int i = 1;          while(i<=n) {              res += (double)1.0/fack(i);              i++;          }          return res;                }      public static int fack(int k) {          int result = 0;          if(k == 1) {              result = 1;          }else {              result = fack(k-1)*k;          }                        return result;                }    }  





原创粉丝点击