华为2019 秋招笔试题

一个字符串中寻找数字并求和

注意点: 1 分离符号字母等和数字

               2   考虑数字左右的字符情况   以及数字连位的情况 (num*10+...)

华为2019 秋招笔试题_第1张图片

 

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        char[] c = sc.next().toCharArray();
        int number = 0;  //保存当前连续的数字
        int result = 0; //所有数字之和
        boolean flag = true;  //判断是否为负数
        for (int i=0; i<= c.length-1 ;i++){  
            int cur = c[i]-'0';   //当前字符
            if (cur >= 0 && cur <=9) {  //是数字字符
            	number = number*10 + (flag ? cur : -cur);   //不管当前字符之前的是否为数字,累加number
            } else{
            	result += number;   //遇到不是数字的字符,先把之前的数字number累加至result
            	number = 0;  //遇到不是数字的字符将number赋值为0
                if (c[i] == '-'){      //判断当前字符是否为-
                    if (i>=1 && c[i-1] =='-') {   //判断前一字符是否也为-
                        flag = !flag;  //将flag取反
                    } else {
                        flag = false;  //如果前一个字符不是-,则需要将flag赋值为false
                    }
                } else {
                    flag = true; 
                }
            }
        }
        result += number;
        System.out.println(result);
   }
}

 

农夫养牛,牛的繁殖数量问题:

类似于斐波那契数列,养兔子问题,找到规律之后用递归直接完成:

 

华为2019 秋招笔试题_第2张图片

华为2019 秋招笔试题_第3张图片 

 

华为2019 秋招笔试题_第4张图片 

 

import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Main m2= new Main();
        Scanner sc= new Scanner(System.in);
        int count= sc.nextInt();
        for(int i=0;i

 

你可能感兴趣的:(华为2019 秋招笔试题)