记阿里算法面试题——把一个字符串倒置,并保持其中每个单词顺序不变

前几天接到阿里的面试机会,先是经历了两轮电话面试,聊了很多先是考察基础再接着是很多关于项目方面的内容。第二轮面试是午休的时段,一直聊到两点多,因为下午还要上班,不得不先到到这。挂电话的时候面试官问我什么时候有时间——在线测代码。我一听心想这是考算法题,这块一直都是我的弱项,不会就要挂这吧,然后我直接把时间约在当天晚上。


public class Revese {


    public static void main(String[]args){

        System.out.println(revese("I am a student."));
    }


    public static String revese(String s){


        int length=s.length();

        char[] str=s.toCharArray();

        StringBuffer strs= new StringBuffer();

        Stack<Character> stack=new Stack();

        for(char ch:str){
            stack.push(ch);//入栈
        }

        Stack<Character> stackTemp=new Stack();

        for(int i=0; i<length;i++){
            if(stack.isEmpty())
                break;
            char ch=  stack.pop();
            if(ch!=' '){
                stackTemp.push(ch);
                if(!stack.isEmpty())
                continue;
            }
            if(!stackTemp.isEmpty()){//反转

                while(!stackTemp.isEmpty()){
                    char char_=  stackTemp.pop();
                    strs.append(char_);
                }
            }
            if(ch==' '){
                strs.append(ch);
            }
        }

        return  strs.toString();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容