My_leetcode


My_leetcode

截断句子

句子 是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前导或尾随空格。每个单词仅由大小写英文字母组成(不含标点符号)。

例如,”Hello World”、”HELLO” 和 “hello world hello world” 都是句子。
给你一个句子 s​​​​​​ 和一个整数 k​​​​​​ ,请你将 s​​ 截断 ​,​​​使截断后的句子仅含 前 k​​​​​​ 个单词。返回 截断 s​​​​​​ 后得到的句子。

  • C++
    lass Solution {
    public:
        string truncateSentence(string s, int k) {
        string s1;
        int i,flag=0;
        for(i=0;i<s.length();i++){
            if(s[i]==' '){
                flag++;
            }
            if(flag==k){
                break;
            }
            
            s1+=s[i];
        }
        return s1;
        }
    };
  • java
    class Solution {
        public String truncateSentence(String s, int k) {
            String[] s1=s.split(" ");;
            String s2="";
            int i;
            for(i=0;i<k;i++){
                s2=s2.concat(s1[i]);
                if(i<k-1){
                    s2=s2.concat(" ");
                }}
            return s2;
        }
    }

链表

链表问题,
求和
2 3 4
3 4 5
输出
x x x
/**

java

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode pre=new ListNode(0);
        ListNode cru=pre;
        int carry=0;
        while(l1!=null||l2!=null){
            int x= l1==null? 0 : l1.val;
            int y= l2==null? 0 : l2.val;
            int sum=0;
            sum=x+y+carry;
            carry=sum/10;
            cru.next=new ListNode(sum%10);
            cru=cru.next;
            if(l1!=null){
            l1=l1.next;
            }
            if(l2!=null){
            l2=l2.next;
            }
        }
        if (carry!= 0){
            cru.next=new ListNode(carry);
        }
        return pre.next;
    }
}

C++
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
#define null ((void *)0)
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode* pre = new ListNode(0);
        ListNode* cur = pre;
        int carry=0;
        while( l1 != null || l2 != null) {
            int x=l1==null ? 0:l1->val;
            int y=l2==null ? 0:l2->val;
            int sum=x+y+carry;

            carry=sum/10;
            sum=sum%10;
            cur->next = new ListNode(sum);
            cur = cur->next;
            if(l1 != null)
                l1 = l1->next;
            if(l2 != null)
                l2 = l2->next;
        }
        if(carry == 1) {
            cur->next = new ListNode(carry);
        }
        return pre->next;

    }
};

主要这道题可以理解链表,自己写几遍可以加深一下印象。
pre记录最前面的地址,最后pre.next,即可获得第二个地址,就很巧妙。


文章作者: 万鲲鹏
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 万鲲鹏 !
评论
  目录