翻转单词顺序列java实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29606255/article/details/78168467

牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?

思路:将字符串按照空格进行分割,然后倒序用空格分隔拼接起来形成字符串并返回。

public class Solution {
    public String ReverseSentence(String str) {
        if(str == null){ return null;}
         if(str.trim().equals("")){
            return str;
        }
        String string = str;
        String[] strings = string.split(" ");
        StringBuilder sBuilder = new StringBuilder();
        for (int i = strings.length-1 ; i>=0;i--) {
            if(i == 0){
                sBuilder.append(strings[i]);
            }else {
                sBuilder.append(strings[i]);
                sBuilder.append(" ");
            }  
        }
        String string2 = sBuilder.toString();
        return string2;
    }
}

java实现单链表的翻转

03-29

我写了一个递归的方法reverse()运行出的结果是testlinklist.Node@4aa298b7;rn然后还有一个reverse2 ()的方法写到那边写不下去了 求大神教rnimport java.util.Scanner;rnclass Node rnrn protected int data; //数据rn protected Node next; //后续rnrn public Node(int data, Node next) rn setData(data); //设数据rn setNext(next); //设后续rn rnrn public Node(int data) rn this(data, null); //无后续rn rnrn public Node() rn this(0, null); //无数据,无后续rn rnrn public void setData(int data) rn this.data = data;rn rnrn public void setNext(Node next) rn this.next = next;rn rnrn public int getData() rn return data;rn rnrn public Node getNext() rn return next;rn rnrnrnclass LinkList rnrn protected Node head; // 单链表的头指针rn protected int size=0;rn public LinkList() // 单链表的构造方法rn head = new Node(0, null); // 初始化头结点,空表rn rnrn public void create(int n) //用n个数据建立链表rn Scanner sc = new Scanner(System.in);rn Node p = head, s;rn for (int i = 0; i < n; i++) rn System.out.print("请输入第" + i + "个结点的数据:");rn s = new Node(sc.nextInt());rn p.setNext(s);rn p = s;rn ++size;rn rn rnrn public void print() rn Node p = head.getNext(); //从有数据的开始rn while (p != null) rn System.out.print(p.getData() + " ");rn p = p.getNext();rn rn System.out.println();rn rnrn public void insert(int i, int x) //插入rn Node p = head; //有表头,表头相当于-1号结点rn int j = -1;rn while (p != null && j < i - 1) //插到i号结点前,先要定位到i-1号结点rn p = p.getNext(); //查找成功时,p是i-1号结点rn ++j;rn //循环结束时p=null或j>i-1或j=i-1,前两种失败rn if (i < 0 || p == null) // i<0,或i-1号结点超出链表尾rn System.out.println("插入位置不合法");rn else rn Node s = new Node(x); //创建新结点rn s.setNext(p.getNext()); //新结点的后续设为原i号节点rn p.setNext(s); //原i-1号结点的后续设为新节点rn rnrnrn public void remove(int i) //删除rn Node p = head;rn int j = -1;rn while (p.getNext() != null && j < i - 1) //找到第i-1个结点rn p = p.getNext(); //查找成功时,p是i-1号结点rn ++j;rn rn if (i < 0 || p.getNext() == null) // i<0或i-1号是链表尾rn System.out.println("删除位置不合法");rn else rn p.setNext(p.getNext().getNext()); //变为下一个的下一个rn rnrnrn public static Node reverse(Node head)rn if(head==null||head.getNext()==null)rn return head;rn rn Node reverseHead=reverse(head.getNext());rn head.getNext().setNext(head);rn head.setNext(null);rn return reverseHead;rn rn rn public void reverse2(Node head)rn for(int i=0;i

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试