华为 2019校园招聘笔试-2018.09.05

三道编程题,2小时,不难。
拿别人的题做的,应该能AC,没有提交

第一题 求26进制的和
给出两个26进制的数,求和
01
思路:
求和,依次加起来,求模,另外找一个数组计算进位就好。
Java AC代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String b = sc.next();
        int[] as = charToint(a.toCharArray());
        int[] bs = charToint(b.toCharArray());
        if (as.length >= bs.length) {
            add(as, bs);
        } else {
            add(bs, as);
        }
    }

    private static void add(int[] a, int[] b) {
        int jw = 0;
        for (int i = 0; i < b.length; i++) {
            int tmp = a[a.length - i - 1] + b[b.length - i - 1] + jw;
            a[a.length - i - 1] = tmp % 26;
            jw = tmp / 26;
        }

        for (int i = b.length; i < a.length; i++) {
            if (jw == 0) {
                break;
            }
            int tmp = a[a.length - i - 1] + jw;
            a[a.length - i - 1] = tmp % 26;
            jw = tmp / 26;
        }

        if (jw != 0) {
            System.out.print((char) (jw + 'a'));
            syso(a);
        }else {
            syso(a);
        }

    }

    private static void syso(int[] a) {
        for (int i = 0; i < a.length; i++) {
            System.out.print((char) (a[i] + 'a'));
        }
    }

    private static int[] charToint(char[] arr1) {
        int[] result = new int[arr1.length];
        for (int i = 0; i < result.length; i++) {
            result[i] = arr1[i] - 'a';
        }
        return result;
    }
}

第二题:
02
思路:
1. 遍历第一个字符串,vector记录字符是否存在
2. 遍历第二个字符串,判断字符在vector中对应值是否为1
3. vector中对应值是否为0,false 否则输出true

代码:

#include <vector>
#include <string>
#include <iostream>
using namespace std;
int arr[26];
int main()
{
     string str1, str2;
     cin >> str1 >> str2;
     int arr[26];
     bool flag = true;
     for(int i=0; i<str1.size(); i++){
        int temp1 = str1[i]-'A';
        arr[temp1] = 1;
     }
     for(int i=0; i<str2.size(); i++){
        int temp2 = str2[i]-'A';
        if(arr[temp2] != 1){
            flag = false;
            break;
        }
     }
     cout << flag << endl;
     return 0;
}

第三题:
03.png

这道题似乎样例给错了,
如果样例给的是对的,当数量相等时按照ASCII和判断大小
如果样例给的是错的,当数量相等时直接按照a.val< b.val判断大小

假设样例是对的,给定以下代码
思路:
1. struct中key代表字符串数量,val代表字符串,sum代表字符串ASCII码值的和
2. 遍历第一个字符串,截取字符串,并记录字符串对应数量,组成node存入vector中
3. 定义cmp比较函数,对vector数组进行排序
4. 遍历输出

代码:

#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
struct node{
    int key;
    string val;
    int sum;
};
bool cmp(node a, node b){
    if(a.key != b.key)
        return a.key < b.key;
    if(a.key==b.key && a.sum!=b.sum)
        return a.sum < b.sum;
}

int main()
{
     string str;
     cin >> str;
     vector<node> arr;
     string s = "";
     int xint = 0;
     int xsum = 0;
     for(int i=0; i<str.size(); i++){
        node temp;
        if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')){
            s += str[i];
            if(str[i]>='a' && str[i]<='z')
                xsum += (str[i]-'a');
            else
                xsum += (str[i]-'A');
        }
        if(str[i]>='0' && str[i]<='9')
            xint = xint*10 + (str[i]-'0');
        if( (str[i]>='0'&&str[i]<='9') &&
            (i==str.size()-1 || (str[i+1]<'0'||str[i+1]>'9'))
            ){
            temp.key = xint;
            temp.val = s;
            temp.sum = xsum;
            arr.push_back(temp);
            xint = 0;
            s = "";
            xsum = 0;
        }
     }
     sort(arr.begin(), arr.end(), cmp);
     string res = "";
     for(int i=0; i<arr.size(); i++){
        for(int j=0; j<arr[i].key; j++)
            res += arr[i].val;
     }
     cout << res << endl;
     return 0;
}
  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 华为WLAN深度资料-802.11是指华为公司提供的关于802.11无线局域网络(WLAN)标准的详细资料。 802.11是一种用于局域网的无线通信技术,它使用无线电波进行通信,并能够提供高速、高效的无线连接。华为作为一家知名的通信设备厂商,积极致力于开发和推广802.11技术,以满足不同用户的无线网络需求。 华为WLAN深度资料-802.11向用户提供了详细的无线网络知识,包括802.11标准的基本原理、技术特点、频段选择、信道分配、传输速率、安全性等方面。用户可以通过学习这些资料,了解和熟悉802.11无线网络的工作原理和使用方法,从而更好地应用于实际网络环境中。 此外,华为WLAN深度资料-802.11还提供了华为自身开发的无线网络产品和解决方案的信息。用户可以了解华为的无线接入点、控制器、管理系统等设备,并学习如何搭建和管理一个稳定可靠的无线网络系统。 华为作为全球领先的通信设备供应商,秉承着技术创新和用户至上的理念,致力于为用户提供先进的无线网络技术和解决方案。通过提供华为WLAN深度资料-802.11,华为希望能够帮助用户在无线网络领域取得更大的成功,并为用户提供更好的网络体验。 ### 回答2: 华为WLAN深度资料-802.11是指华为公司提供的关于无线局域网(WLAN)的详细技术资料,具体涉及到802.11无线标准。 802.11是一组无线局域网标准,主要用于无线数据传输。华为WLAN深度资料提供了关于这一标准的详细信息和实施指南,使用户能够更好地理解和应用802.11标准。 在华为WLAN深度资料中,用户可以了解到802.11标准的不同版本、技术特点和相关的协议。资料中提供了关于无线频段、无线信号传输原理、数据传输速率等方面的详细解释,帮助用户更好地理解无线网络的工作原理。 同时,华为WLAN深度资料还包括了关于无线网络规划、布局和优化的案例分析和实践经验。这些资料对于设计和部署无线网络的工程师和管理员来说,具有重要的参考价值。 此外,华为WLAN深度资料还涵盖了WLAN安全性、性能优化、管理和监控等方面的内容。这些资料可以帮助用户更好地了解和应对无线网络中可能遇到的各种问题和挑战。 总的来说,华为WLAN深度资料-802.11提供了关于无线局域网的全面且深入的技术资料,帮助用户更好地了解和应用802.11标准,提高无线网络的性能和安全性。 ### 回答3: 华为WLAN深度资料-802.11是关于华为公司的无线局域网技术的详细信息和规范。802.11是一个无线局域网标准,定义了无线局域网的协议和规范。华为WLAN深度资料-802.11主要包括以下内容。 首先,它介绍了无线局域网技术的基本原理和概念。这包括无线局域网的工作原理、网络拓扑、数据传输方式等。它还解释了一些关键术语,例如SSID(服务集标识符)、BSSID(基本服务集标识符)和MAC地址(媒体访问控制地址)等。 其次,它详细介绍了华为WLAN产品的特点和功能。这包括华为无线接入控制器、无线AP(接入点)等产品的特点和功能。它还说明了这些产品的部署方式和配置方法。 此外,华为WLAN深度资料-802.11还介绍了无线局域网的安全性和性能优化。它解释了一些常见的无线安全攻击方式,例如ARP欺骗和无线网络窃听,并提供了相应的安全解决方案。此外,它还介绍了一些优化无线网络性能的方法,例如信道选择和功率控制。 最后,华为WLAN深度资料-802.11展示了一些实际案例和应用场景。它介绍了一些真实的无线网络部署案例,例如企业级无线局域网和公共场所的无线覆盖。它还介绍了华为的一些合作伙伴和客户,并解释了他们是如何使用华为WLAN技术来满足他们的网络需求的。 总之,华为WLAN深度资料-802.11提供了关于华为公司无线局域网技术的全面细节和规范,帮助用户更好地理解和使用这些技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值