劍指Offer之Java算法習題精講鏈表與字符串及數(shù)組
題目一
鏈表題——操作鏈表
根據(jù)給定的鏈表按照指定條件刪除其中節(jié)點并返回新的頭節(jié)點
具體題目如下
解法
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode removeElements(ListNode head, int val) { ListNode q = new ListNode(-1); ListNode a = q; q.next = head; while(q.next!=null){ if(q.next.val==val){ q.next = q.next.next; }else{ q = q.next; } } return a.next; } }
題目二
字符串題——判斷同構字符串
根據(jù)給定的字符串判斷他們是否為同構字符串
具體題目如下
解法
class Solution { public boolean isIsomorphic(String s, String t) { if(s.length()!=t.length()){ return false; } for(int i =0;i<s.length();i++){ if(s.indexOf(s.charAt(i))!=t.indexOf(t.charAt(i))){ return false; } } return true; } }
題目三
鏈表題——操作鏈表
編寫函數(shù)來刪除某個單鏈表中指定的節(jié)點
具體題目如下
解法
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public void deleteNode(ListNode node) { node.val = node.next.val; node.next = node.next.next; } }
題目四
字符串題——判斷異位詞
編寫函數(shù)來判斷給定的兩個字符串是否為字母異位詞
具體題目如下
解法
class Solution { public boolean isAnagram(String s, String t) { if(s.length()!=t.length()) return false; ArrayList<Character> list1 = new ArrayList<>(); ArrayList<Character> list2 = new ArrayList<>(); for (int i = 0; i < s.length(); i++) { list1.add(s.charAt(i)); } for (int i = 0; i < t.length(); i++) { list2.add(t.charAt(i)); } Collections.sort(list1); Collections.sort(list2); for (int i = 0; i < list1.size(); i++) { if (list1.get(i)!=list2.get(i)) return false; } return true; } } //要熟悉API class Solution { public boolean isAnagram(String s, String t) { if (s.length() != t.length()) { return false; } char[] str1 = s.toCharArray(); char[] str2 = t.toCharArray(); Arrays.sort(str1); Arrays.sort(str2); return Arrays.equals(str1, str2); } }
題目五
數(shù)組題——查找數(shù)組
根據(jù)給定的數(shù)組按照指定條件查找數(shù)組中是否包含指定值
具體題目如下
解法
class Solution { public int missingNumber(int[] nums) { Arrays.sort(nums); for (int i = 0; i < nums.length; i++) { if(i!=nums[i]){ return i; } } return nums.length; } }
題目六
字符串題——驗證字符串
驗證給定的字符串是否遵循相同的規(guī)律
具體題目如下
解法
class Solution { public boolean wordPattern(String pattern, String s) { String[] split = s.split(" "); if(split.length!=pattern.length()) return false; int q = 0; for(int i =0;i<split.length;i++){ l: for(int w = 0;w<split.length;w++){ if(split[w].equals(split[i])){ q = w; break l; } } if(pattern.indexOf(pattern.charAt(i))!=q){ return false; } } return true; } }
到此這篇關于劍指Offer之Java算法習題精講鏈表與字符串及數(shù)組的文章就介紹到這了,更多相關Java 鏈表內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringMVC Json自定義序列化和反序列化的操作方法
這篇文章主要介紹了SpringMVC Json自定義序列化和反序列化的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01

Java數(shù)據(jù)結構最清晰圖解二叉樹前 中 后序遍歷

Java使用wait() notify()方法操作共享資源詳解

springboot-jta-atomikos多數(shù)據(jù)源事務管理實現(xiàn)

feign客戶端HTTP狀態(tài)碼為204時?響應體被忽略的問題

Elasticsearch查詢及聚合類DSL語句寶典示例詳解