leetcode937-java

937. 重新排列日志文件

一个简单题让我做了将近一个小时去。。

你有一个日志数组 logs。每条日志都是以空格分隔的字串。

对于每条日志,其第一个字为字母数字标识符。然后,要么:

  • 标识符后面的每个字将仅由小写字母组成,或;
  • 标识符后面的每个字将仅由数字组成。

我们将这两种日志分别称为字母日志和数字日志。保证每个日志在其标识符后面至少有一个字。

将日志重新排序,使得所有字母日志都排在数字日志之前。字母日志按字母顺序排序,忽略标识符,标识符仅用于表示关系。数字日志应该按原来的顺序排列。

返回日志的最终顺序。

示例 :

输入:["a1 9 2 3 1","g1 act car","zo4 4 7","ab1 off key dog","a8 act zoo"]
输出:["g1 act car","a8 act zoo","ab1 off key dog","a1 9 2 3 1","zo4 4 7"]

提示:

  1. 0 <= logs.length <= 100
  2. 3 <= logs[i].length <= 100
  3. logs[i] 保证有一个标识符,并且标识符后面有一个字。
class Solution {
    class MyString{
    String all;
    String part;
    public MyString(String all,String part){
        this.all=all;
        this.part=part;
    }
    
}
    public String[] reorderLogFiles(String[] logs) {
    String[]result=new String[logs.length];
        int count=0;
        List<String>numList=new ArrayList<String>();
        String before=null;
        String key=null;
        List<MyString>mystring=new ArrayList<MyString>();
        for(int i=0;i<logs.length;i++){
           String[]tmp=logs[i].split(" ");
            if(tmp[1].charAt(0)>='0'&&tmp[1].charAt(0)<='9')
                numList.add(logs[i]);
            else{
                String ch[]=logs[i].split(tmp[0]+" ");
               MyString str=new MyString(logs[i],ch[1]);
                mystring.add(str);
            }
            
        }
        int len=mystring.size();
       for(int i=0;i<len;i++){
           MyString str=mystring.get(0);
            key=mystring.get(0).all;
           before=mystring.get(0).part;
           
           for(int j=1;j<mystring.size();j++){
               //System.out.println(before);
              // System.out.println(mystring.get(j).part);
               //System.out.println(mystring.get(j).part.compareTo(before)>=0);
               if(mystring.get(j).part.compareTo(before)<0){
                   str=mystring.get(j);
                   key=mystring.get(j).all;
                   before=mystring.get(j).part;
               }
           }
           mystring.remove(str);
           result[count++]=key;
           
       }
        for(int i=0;i<numList.size();i++)
            result[count++]=numList.get(i);
        return result;
        
    }
}

猜你喜欢

转载自www.cnblogs.com/HannahLihui/p/10160563.html