打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
华为机试题
/**
 *1、 输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果。
 * 要求:该字符串只包含小写字母,若其值加5后的字符值大于'z',将其转换成从a开始的字符
 */
public class Demo1 {
public static void main(String[] args) {
Demo1 test = new Demo1();
String data = "";
String regex = "^[a-z]*$";
if (data.matches(regex)) {
System.out.println(test.getString(data));
} else {
System.out.println("输入的字符串不合法");
}
}
public char[] getString(String data) {
char[] arr = data.toCharArray();
for (int i = 0; i < arr.length; i++) {
if (arr[i] + 5 > 'z') {
arr[i] = (char) (arr[i] - 21);
} else {
arr[i] = (char) (arr[i] + 5);
}
}
return arr;
}
}
/**
 *2、求一个整形数组中元素的平均值,并统计其中大于和小于此平均值的元素的个数
  要求:输入:整形数组中的元素个数及各个元素
             输出:整型数组中元素的平均值,大于和小于此平均值的元素个数
 */
public class Demo2 {

public static void main(String[] args) {
int[] arr ={1,100};
new Demo2().getavage(arr, 2);
}
public void getavage(int[] arr, int num){
if(num==0){
System.out.println("数组为空");
}else{
double avage = 0.0;
int sum = 0;
int count1=0;
int count2=0;
for(int i=0;i<arr.length;i++){
sum += arr[i];
}
avage = (double)sum/num;
for(int j =0;j<num;j++){
if(arr[j]>avage){
count1++;
}else{
count2++;
}
}
System.out.println("平均值:"+avage);
System.out.println("大于平均值的元素个数:"+count1);
System.out.println("小于平均值的元素个数:"+count2);
}
}
}
3、手动输入一个存储整数的数组,要求输出数组里面的2个最大值
  例子:输入:1、2、5、9、84、3、2
      输出:84、9
public class Demo3 {
public static void main(String[] args) {
Demo3 test = new Demo3();
int[] arr = {1};
test.getMaxValue(arr);
}
public void getMaxValue(int[] arr){
int temp=0;
if(arr.length<1){
System.out.println("数组元素个数至少为2");
}
else{
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
 if(arr[i]>arr[i+1]){
temp = arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
 }
   }
}
System.out.print(arr[arr.length-1]+"、"+arr[arr.length-2]);
}
}
}
 4、回文数字判断。题目描述:有这样一类数字,他们顺着看和倒着看是相同的数。
    如:121,656,2332等。这样的数字称为回文数字。
    编写一个函数,判断某数字是否是回文数字。
    public String isPalidrome(String strIn)
     输入:strIn:整数,以字符串表示
     返回:true:是回文数字
         false:不是回文数字
    只需完成该函数功能算法,中间不需要任何IO的输入和输出
    示例:输入:strIn="121",返回:true
public class Demo4 {
public boolean isPalindrome(String str) { 
        char[] arr = str.toCharArray();
        int len = arr.length; 
        boolean b = false; 
        for(int i = 0; i <= len/2; i++ ) { 
           if(arr[i] != arr[len-i-1]) { 
              break; 
           }
           b=true;
        } 
        return b; 
   }   
   public static void main(String[] args) { 
        String str = "223322";        
        if(new Demo4().isPalindrome(str) ) { 
               System.out.println("该字符串是回文字符串!"); 
        } else { 
               System.out.println("该字符串不是回文字符串!"); 
          }             
    } 
}
6、手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。提示可以用map
   例子:输入:aaabbbccc
       输出:a 3
                   b 3
                   c 3
public class Demo6 {

public static void main(String[] args) {
Demo6 test = new Demo6();
String data = "kjdfldfsaf";
String regex = "^[a-z]*$";
if(data.matches(regex)){
Map<Character, Integer> map = test.getCharAount(data);
for(Map.Entry<Character, Integer> entry:map.entrySet()){
System.out.println(entry.getKey()+" "+entry.getValue());
}
}else{
System.out.println("输入的字符串不合法");
}
}
public Map<Character,Integer> getCharAount(String data){
Map<Character,Integer> tree = new TreeMap<Character,Integer>();
char[] arr = data.toCharArray();
for(int i=0;i<arr.length;i++){
if(!tree.containsKey(arr[i])){
tree.put(arr[i], new Integer(1));
}else{
Integer in = tree.get(arr[i])+1;
tree.put(arr[i], in);
}
}
return tree;
}
}
7、要求实现方法(这是在网上看的一个答案。没有处理负数相加。字符串相加竟然也能通过!)
public class Demo7_bignum {   
  public String addTwoBigNumber(String s1,String s2){
  //大数相加,注意处理异常
  String result="";
  //保证s1是最长的
  if(s1.length()<s2.length()){
  String temStr = s2;
  s2 = s1;
  s1 = temStr;
  }
  int sum =0;
  int flag = 0;//进位
  int deleW=s1.length()-s2.length();
  //从个位开始相加
  for(int i=s1.length()-1;i>=0;i--){
  if((i-deleW)>=0){
  sum = (s1.charAt(i)-'0')+(s2.charAt(i-deleW)-'0')+flag;
  }else{
  sum = (s1.charAt(i)-'0')+flag;
  }
  //每次相加后把进位置0
  flag = 0;
  //如果和大于等于10,再将进位置为1
  if(sum>9){
  sum-=10;
  flag = 1;
  }   
  result = sum+result;
  }
  //如果最高位有进位
  if(flag == 1){
  result = "1"+result;
  flag = 0;
  }
  return result;
  }
    
  public static void main(String[] args) {
  Demo7_bignum test = new Demo7_bignum();
     String str = test.addTwoBigNumber("","0");
      System.out.println(str);
   }
 }
7.1、大数相加
import java.math.BigDecimal;
public class Demo7_1 {   
  public String addTwoBigNumber(String s1,String s2){
  //大数相加,注意处理异常
  String regex = "^\\-?[1-9][0-9]*\\.?[0-9]*$";
  if(!s1.matches(regex)||!s2.matches(regex)){
  return "输入的值不合法";
  }
  BigDecimal bd1 = new BigDecimal(s1);
  BigDecimal bd2 = new BigDecimal(s2);
  String result = bd1.add(bd2).toString();
  return result;
  }
  public static void main(String[] args) {
  Demo7_1 test = new Demo7_1();
      String r1 = test.addTwoBigNumber("123456789","987654321");
      String r2 = test.addTwoBigNumber("-10.5", "5");
      System.out.println(r1);
      System.out.println(r2);
 }
}
/**
 * 8、比较二维数组列最小值,组成一个新数组返回。
 * (实现核心算法,不需要使用IO) 输入:{{5,6,1,16},{7,3,9}} 输出:intArrs
 *  ={1,3}
 */
public class Demo8 {
public static void main(String args[]) {
// 写测试方法
int[][] a = { { 5, 6, 1, 16 }, { 7, 3, 9 }, { 2, 4, 56 } };
int[] ss = getColMin(a);
for (int i = 0; i < ss.length; i++) {
System.out.print(ss[i] + " ");
}
}
public static int[] getColMin(int a[][]) {
int[] res = new int[a.length];
for (int i = 0; i < a.length; i++) {
int[] s = a[i];
Arrays.sort(s);
res[i] = s[0];
}
return res;
}
}
/**
 * 10、功能描述:将字符串中的字母全部替换成字母的下一个字母, 要是最后一位是z或Z则替换为a或A。 
 *        输入:aBxyZ
 *        输出:bCyzA
 */
public class Demo10 {
public static void main(String[] args) {
String data = "";
System.out.println(new Demo10().nextString(data));
}
public String nextString(String data) {
char[] arr = data.toCharArray();
for (int i = 0; i < arr.length; i++) {
if (arr[i] >= 'a' && arr[i] <= 'z' || arr[i] >= 'A'
&& arr[i] <= 'Z') {
if (arr[i] == 'z' || arr[i] == 'Z') {
arr[i] = (char) (arr[i] - 25);
} else if ((arr[i] >= 'a' && arr[i] < 'z')
|| (arr[i] >= 'A' && arr[i] < 'Z')) {
arr[i] = (char) (arr[i] + 1);
}
}
}
String res = String.valueOf(arr);
return res;
}
}
/**
 * 11、判断一个字符串中是否只含有相同的子字符串(子字符串>=2)。 输入:abab 返回:true 输入:abcd 返回:false
 */
public class Demo11 {
public static void main(String[] args) {
String data = "ababab";
boolean flag = new Demo11().checkString(data);
System.out.println(flag);
}
public boolean checkString(String data) {
boolean flag = false;
if (data.length() == 2 || data.length() == 0 || data.length() % 2 != 0) {
return flag;
}
int subStrMaxLen = data.length() / 2;
for (int i = 2; i <= subStrMaxLen; i++) {
int subStrNumber = data.length() / i;
String[] temp = new String[subStrNumber];
int begin = 0;
int end = i;
for (int j = 0; j < subStrNumber; j++) {
temp[j] = data.substring(begin, end);
begin += i;
end += i;
}
for (int k = 0; k < subStrNumber - 1; k++) {
if (temp[k].equals(temp[k + 1])) {
flag = true;
} else {
flag = false;
break;
}
}
if (flag == true) {
break;
}
}
return flag;
}
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JAVA经典算法50题(4)【面试+工作】
把数组中的数据按照指定格式拼接成一个字符串
Java split方法和正则表达式
php基础函数数组函数字符串函数
数组
Java基础
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服