2022-8-21 每日一题+简单模拟

1455. 检查单词是否为句中其他单词的前缀

难度简单

给你一个字符串 sentence 作为句子并指定检索词为 searchWord ,其中句子由若干用 单个空格 分隔的单词组成。请你检查检索词 searchWord 是否为句子 sentence 中任意单词的前缀。

如果 searchWord 是某一个单词的前缀,则返回句子 sentence 中该单词所对应的下标(下标从 1 开始)。如果 searchWord 是多个单词的前缀,则返回匹配的第一个单词的下标(最小下标)。如果 searchWord 不是任何单词的前缀,则返回 -1 。

字符串 s 的 前缀 是 s 的任何前导连续子字符串。

 1 class Solution {
 2     public int isPrefixOfWord(String sentence, String searchWord) {
 3         String[] arr=sentence.split(" ");
 4         int index=1;
 5         for (String s:arr){
 6             if (isPrefix(searchWord,s)){
 7                 return index;
 8             }
 9             index++;
10         }
11         return -1;
12     }
13 
14     public boolean isPrefix(String s,String s1){
15         if (s.length()>s1.length()) return false;
16         int index=0;
17         while (index<s.length()){   
18             if (s.charAt(index)!=s1.charAt(index)) return false;
19             index++;
20         }
21         return true;
22     }
23 }

思路:分割单词在判断。

剑指 Offer II 058. 日程表

难度中等

请实现一个 MyCalendar 类来存放你的日程安排。如果要添加的时间内没有其他安排,则可以存储这个新的日程安排。

MyCalendar 有一个 book(int start, int end)方法。它意味着在 start 到 end 时间内增加一个日程安排,注意,这里的时间是半开区间,即 [start, end), 实数 x 的范围为,  start <= x < end

当两个日程安排有一些时间上的交叉时(例如两个日程安排都在同一时间内),就会产生重复预订。

每次调用 MyCalendar.book方法时,如果可以将日程安排成功添加到日历中而不会导致重复预订,返回 true。否则,返回 false 并且不要将该日程安排添加到日历中。

请按照以下步骤调用 MyCalendar 类: MyCalendar cal = new MyCalendar(); MyCalendar.book(start, end)

 1 class MyCalendar {
 2     List<int[]> list;
 3     public MyCalendar() {
 4         list=new ArrayList<>();
 5     }
 6     
 7     public boolean book(int start, int end) {
 8         for (int[] x:list){
 9             if (conflict(x,start,end)) return false;
10         }
11         list.add(new int[]{start,end});
12         return true;
13     }
14 
15     public boolean conflict(int[] x,int s,int e){
16         if (x[1]<=s||x[0]>=e) return false;
17         return true;
18     }
19 }
20 
21 /**
22  * Your MyCalendar object will be instantiated and called as such:
23  * MyCalendar obj = new MyCalendar();
24  * boolean param_1 = obj.book(start,end);
25  */

思路:暴力解法,Treeset应用,需要一个数据结构能够保持元素排序和支持快速插入,可以用TreeSet 来构建。

学习一下Treeset的函数。first,last,ceiling,floor,lower,up等等。

 

 

 

posted on 2022-08-21 12:15  阿ming  阅读(21)  评论(0编辑  收藏  举报

导航