有同学可以分享下今天华为机试第一题代码吗?

如标题...一道都没写出来,第一道很快写完了,结果卡在80%用例上,一直调到考试结束。谁能分享下吗?我想死的明白点....已经绝望到要放弃自己了

感谢回复我的小哥哥们,我平静下来了,也希望帮我看下代码吧。

package com.chen.huawei;

import java.util.*;

public class testt {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

while (in.hasNextInt()) {

String ss1 = in.nextLine();

String[] strs = ss1.split(" ");

int num = Integer.valueOf(strs[0]);

String[] ss = new String[strs.length - 1];

for(int i = 0;i <ss.length;i++){

ss[i] = strs[i+1];

}

//处理

List<String> list = split(ss);

//输出

Collections.sort(list);

if(list.size() == 0){

System.exit(0);

}

System.out.print(list.get(0)+" ");

for(int i = 1;i <list.size();i++){

String s = list.get(i );

System.out.println(s);

}

}

}

private static List<String> split(String[] ss) {

List<String> list = new ArrayList<>();

for(String s:ss) {

StringBuilder builder = new StringBuilder();

int len = s.length();

if (len < 8) {

builder.append(s);

for (int i = 1; i <= 8 - len; i++) {

builder.append('0');

}

list.add(builder.toString());

} else if (len == 8) {

builder.append(builder.toString());

} else {

//字符串长度大于8,循环处理

while (s.length() % 8 != 0) {

s = s+'0';

}

for (int i = 0; i < s.length(); i = i + 8) {

String s1  = s.substring(i, i + 8);

list.add(s1);

}

}

}

return list;

}

}

#华为##笔试题目#
全部评论
package huawei; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Scanner; public class Main1 {     public static void main(String[] args) {         // TODO Auto-generated method stub         Scanner sc = new Scanner(System.in);         int n = sc.nextInt();         String[] str = new String[n];         List<String> res = new ArrayList<>();         for(int i = 0; i < n; i++) {             str[i] = sc.next();             modify(str[i], res);         }         Collections.sort(res, new sortStr());         for(String result:res) {             System.out.print(result + " ");         }         sc.close();     }          public static void modify(String str, List<String> res) {         if(str.length() == 8) {             res.add(str);             return;         }else if(str.length()>8) {             res.add(str.substring(0, 8));             modify(str.substring(8),res);         }else if(str.length() < 8) {             StringBuilder sb = new StringBuilder(str);             for(int i = str.length(); i < 8; i++) {                 sb.append(0);             }             res.add(sb.toString());         }     } } class sortStr implements Comparator<String>{     public int compare(String str1, String str2) {         if(str1.length() == 0 || str2.length() == 0)             return 0;         if(str1.charAt(0) > str2.charAt(0))             return 1;         else if(str1.charAt(0) < str2.charAt(0))             return -1;         else             return compare(str1.substring(1),str2.substring(1));     } }
点赞 回复 分享
发布于 2019-04-11 11:35
点赞 回复 分享
发布于 2019-04-11 10:53
import sys for line in sys.stdin: s = line.strip().split() s = s[1:] res = [] for data in s: length = len(data) r = length%8 length += r data += '0'*(8-r) for i in range(0,length,8): res.append(data[i:i+8]) res.sort() for i in res: print(i,end=' ') 我用python写的,结果只过了40%的case,提示输出的格式不符合要求! 请各位大佬给看看,问题可能出在哪里,现在我很迷啊!
点赞 回复 分享
发布于 2019-04-11 10:46
难受,没有一百分是进不了面试吗
点赞 回复 分享
发布于 2019-04-11 00:14
#include<iostream> #include<cstring> #include<string> #include<vector> #include<algorithm> using namespace std; int main() {     int n;     vector<string>v;     cin >> n;     for (int i = 0; i < n; i++)     {         string s;         cin >> s;         if (s.size() < 8)         {             for (int j = 8 - s.size(); j > 0; j--)                 s += "0";             v.push_back(s);             continue;         }         else if (s.size() == 8)         {             v.push_back(s);         }         else if (s.size() > 8)         {             int size = s.size();             int j = 0;             while (size > 8)             {                 string a;                 a = s.substr(j, 8);                 v.push_back(a);                 j += 8;                 size -= 8;             }             string b = s.substr(j, size);             if (b.size() < 8)             {                 for (int j = 8 - b.size(); j > 0; j--)                     b += "0";                 v.push_back(b);                 continue;             }             else if (b.size() == 8)             {                 v.push_back(b);             }                      }              }     sort(v.begin(), v.end());     for (int i = 0; i < v.size()-1; i++)     {         cout << v[i] << " ";     }     cout << v[v.size() - 1] << endl;           } 过了一百。
点赞 回复 分享
发布于 2019-04-10 23:34
100%...虽然方法很蠢
点赞 回复 分享
发布于 2019-04-10 23:34
arr = input().strip().split() n = int(arr[0]) li=[] for i in range(1,n+1): len1 = len(arr[i]) b = len1//8 j = 0 while j<=len1-8: li.append(arr[i][j:j+8]) j+=8 if j>b*8-1: c = arr[i][j:] if len(c)<8 and len(c)>0: li.append(c+'0'*(8-len(c))) li.sort() print(' '.join(li)) 人生苦短,我用python!
点赞 回复 分享
发布于 2019-04-10 23:33
package xxx; import java.util.*; public class ccvv {     static ArrayList<String> all=new ArrayList<String>();          public static void main(String[] args) {         Scanner cin=new Scanner(System.in);         String str=cin.nextLine();         String[] strs=str.split(" ");         bb(strs);         System.out.println(all);         paixu(all);     }          public static void bb(String[] strs) {         int n=Integer.valueOf(strs[0]);                                    for(int i=1;i<strs.length;i++) {             if(strs[i].length()==8) {                 all.add(strs[i]);             }else if(strs[i].length()<8) {                 int k=8-strs[i].length();                 StringBuffer sb=new StringBuffer();                 sb.append(strs[i]);                 for(int x=0;x<k;x++) {                     sb.append("0");                 }                 String re=sb.toString();                 all.add(re);             }else {                 jie(strs[i]);             }                      }     }          public static void jie(String kk) {         if(kk.length()%8==0) {             int num=kk.length()/8;             for(int k=0;k<num;k++) {                 String mm=kk.substring(k*8, (k+1)*8);                 all.add(mm);             }         }else {             int num=(int)kk.length()/8;             for(int k=0;k<num;k++) {                 String mm=kk.substring(k*8, (k+1)*8);                 all.add(mm);             }             int k=8-(kk.length()-8*num);             StringBuffer sb=new StringBuffer();             String end=kk.substring(8*num, kk.length());             sb.append(end);             for(int x=0;x<k;x++) {                 sb.append("0");             }             String some=sb.toString();             all.add(some);         }              }               public static void paixu(ArrayList<String> all) {         ArrayList<String> last=new ArrayList<String>();         while(all.size()!=1) {             String in=all.get(0);             for(int k=1;k<all.size();k++) {                 char[] ins=in.toCharArray();                 String on=all.get(k);                 char[] ons=on.toCharArray();                 for(int x=0;x<8;x++) {                     if(ins[x]==ons[x]) {                         continue;                     }else if(ins[x]>ons[x]) {                         in=on;                         break;                     }else if(ins[x]<ons[x]) {                         break;                     }                 }             }             last.add(in);             all.remove(in);         }         last.add(all.get(0));         for(String hh:last) {             System.out.print(hh+" ");         }     } } 我用JAVA写的 好像是全部通过了
点赞 回复 分享
发布于 2019-04-10 23:27
还是喜欢用python🤣
点赞 回复 分享
发布于 2019-04-10 23:26
额(⊙o⊙)…。考虑下字符长度刚好为8的case
点赞 回复 分享
发布于 2019-04-10 23:24
俺也一样
点赞 回复 分享
发布于 2019-04-10 23:20
我刚发了个python版本的😂
点赞 回复 分享
发布于 2019-04-10 23:17

相关推荐

03-15 12:48
门头沟学院 Java
牛牛要早起:这个一般就跟你说有高薪,然后叫你买车,之后血亏
点赞 评论 收藏
分享
评论
点赞
6
分享

创作者周榜

更多
牛客网
牛客企业服务