摘要:依次類推選擇排序基本思路把第一個元素依次和后面的所有元素進行比較。方法一定義計數器定義變量記錄出現的位置方法二兩個字符串中最大相同的子串。在一個字符串中,統(tǒng)計出現的整數的個數,連續(xù)的數字為一個整數不考慮負數,字符串中不包含空格。
for循環(huán),外循環(huán)控制的是行數,內循環(huán)控制的是每一行的個數。
***** ***** ***** ***** for (int x = 0; x < 4; x++){// 外循環(huán)控制的是行數 for (int y = 0; y < 5; y++){// 內循環(huán)控制的是每一行的個數 System.out.print("*"); } System.out.println(); }
--------------------------------------------------
***** **** *** ** * for (int x = 1; x <= 5; x++) { for (int y = x; y <= 5; y++) { System.out.print("*"); } System.out.println(); }
--------------------------------------------------
* ** *** **** ***** for (int x = 1; x <= 5; x++) { for (int y = 1; y <= x; y++) { System.out.print("*"); } System.out.println(); }
--------------------------------------------------
54321
5432
543
54
5
for (int x = 1; x <= 5; x++) { for (int y = 5; y >= x; y--) { System.out.print(y); } System.out.println(); }
--------------------------------------------------
1
22
333
4444
55555
for (int x = 1; x <= 5; x++) { for (int y = 1; y <= x; y++) { System.out.print(x); } System.out.println(); }
--------------------------------------------------
* * * * * * * * * * * * * * * for (int x = 1; x <= 5; x++) {//分成左右兩邊,左邊是空格,右邊是*加空格 for (int y = 1; y < x; y++) { System.out.print(" "); } for (int z = x; z <= 5; z++) { System.out.print("* "); } System.out.println(); }
--------------------------------------------------
?
* * * * * * * * * * * * * * * for (int x = 1; x <= 5; x++) { for (int y = x; y < 5; y++) { System.out.print(" "); } for (int z = 1; z <= x; z++) { System.out.print("* "); } System.out.println(); }
--------------------------------------------------
九九乘法表
for (int x = 1; x <= 9; x++) { for (int y = 1; y <= x; y++) { System.out.print(y + "*" + x + "=" + y * x + " "); } System.out.println(); }整型數組
遍歷數組的功能
public static void printArray(int[] arr) { System.out.print("["); for (int x = 0; x < arr.length; x++) { if (x != arr.length - 1) { System.out.print(arr[x] + ","); } else { System.out.println(arr[x] + "]"); } } }
--------------------------------------------------
獲取最大值
public static int getMax(int[] arr) { int maxElement = arr[0]; for (int x = 0; x < arr.length; x++) { if (arr[x] > maxElement) { maxElement = arr[x]; } } return maxElement; }
--------------------------------------------------
獲取最大值2
public static int getMax_2(int[] arr) { int maxIndex = 0; for (int x = 0; x < arr.length; x++) { if (arr[x] > arr[maxIndex]) { maxIndex = x; } } return arr[maxIndex]; }
--------------------------------------------------
置換
private static void swap(int[] arr, int a, int b) { int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; }
--------------------------------------------------
反轉
public static void reverseArray(int[] arr) { for (int start = 0, end = arr.length - 1; start < end; start++, end--) { swap(arr, start, end); } }
--------------------------------------------------
冒泡排序
基本思路:相鄰元素兩兩比較,大的往后放,第一次完畢,最大值出現在了最大索引處。依次類推
public static void bubbleSort(int[] arr) { for (int x = 0; x < arr.length - 1; x++) { for (int y = 0; y < arr.length - 1 - x; y++) { if (arr[y] > arr[y + 1]) { swap(arr, y, y + 1); } } } }
--------------------------------------------------
選擇排序
基本思路:?把第一個元素依次和后面的所有元素進行比較。?第一次結束后,就會有最小值出現在最面。依次類推
public static void selectSort(int[] arr) { for (int x = 0; x < arr.length - 1; x++) { for (int y = x + 1; y < arr.length; y++) { if (arr[x] > arr[y]) { swap(arr, x, y); } } } }
--------------------------------------------------
選擇排序2,記錄索引
public static void selectSort_2(int[] arr) { for (int x = 0; x < arr.length - 1; x++) { int num = arr[x]; int index = x; for (int y = x + 1; y < arr.length; y++) { if (num > arr[y]) { num = arr[y]; index = y; } } if (index != x) { swap(arr, x, index); } } }
--------------------------------------------------
二分查找(折半查找),數組必須有序
public static int halfSearch(int[] arr, int key) { int max = arr.length - 1; int min = 0; int mid = (max + min) / 2; while (arr[mid] != key) { if (key > arr[mid]) { min = mid + 1; } else if (key < arr[mid]) { max = mid - 1; } if (max < min) { return -1; } mid = (max + min) / 2; } return mid; }
--------------------------------------------------
二分查找2,數組必須有序
public static int halfSearch_2(int[] arr, int key) { int max, min, mid; min = 0; max = arr.length - 1; while (min <= max) { mid = (min + max) >> 1; if (key > arr[mid]) { min = mid + 1; } else if (key < arr[mid]) { max = mid - 1; } else { return mid; } } return -min - 1; }字符串
字符串數組置換
private static void swap(String[] arr, int a, int b) { String temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; }
給定一個字符串數組。按照字典順序進行從小到大的排序。
public static void sortString(String[] arr) { for (int i = 0; i < arr.length - 1; i++) { for (int j = i + 1; j < arr.length; j++) { if (arr[i].compareTo(arr[j]) > 0) { swap(arr, i, j); } } } }
--------------------------------------------------
一個子串在整串中出現的次數。
//"nbaernbatynbauinbaopnba" “nba" /* 思路: * 1,要找的子串是否存在,如果存在獲取其出現的位置。這個可以使用indexOf完成。 * 2,如果找到了,那么就記錄出現的位置并在剩余的字符串中繼續(xù)查找該子串, * 而剩余字符串的起始位是出現位置+子串的長度. * 3,以此類推,通過循環(huán)完成查找,如果找不到就是-1,并對每次找到用計數器記錄。 */ //方法一 public static int getKeyStringCount(String str, String key) { // 定義計數器 int count = 0; // 定義變量記錄key出現的位置 int index = 0; while ((index = str.indexOf(key)) != -1) { str = str.substring(index + key.length()); count++; } return count; } //方法二 public static int getKeyStringCount_2(String str, String key) { int count = 0; int index = 0; while ((index = str.indexOf(key, index)) != -1) { index = index + key.length(); count++; } return count; }
--------------------------------------------------
兩個字符串中最大相同的子串。
/* "qwerabcdtyuiop" "xcabcdvbn" * 思路: 1,既然取得是最大子串,先看短的那個字符串是否在長的那個字符串中。 如果存在,短的那個字符串就是最大子串。 * 2,如果不是呢,那么就將短的那個子串進行長度遞減的方式去子串,去長串中判斷是否存在。 如果存在就已找到,就不用在找了。 */ public static String getMaxSubstring(String s1, String s2) { String max = null, min = null; max = (s1.length() > s2.length()) ? s1 : s2; min = max.equals(s1) ? s2 : s1; System.out.println("max=" + max); System.out.println("min=" + min); for (int i = 0; i < min.length(); i++) { for (int a = 0, b = min.length() - i; b != min.length() + 1; a++, b++) { String sub = min.substring(a, b); // System.out.println(sub); if (max.contains(sub)) return sub; } } return null; }
--------------------------------------------------
在一個字符串中,統(tǒng)計出現的整數的個數,連續(xù)的數字為一個整數(不考慮負數),字符串中不包含空格。
/** * a10b20c30de40fg * 思路:首先要遍歷所有的字符,判斷每個字符是不是數字,是數字的話就把它放在一個StringBuilder對象 * 里面并標記,下面一個字符要是數字就加在后面,不是數字的話,就把當前的StringBuilder里面的數字 * 塞到list里面,最后判斷l(xiāng)ist長度即可 */ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String s = scanner.next(); scanner.close(); if (s != null && s.length() != 0) { Listlist = new ArrayList (); StringBuilder sb = new StringBuilder(); boolean isChar = false; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c >= "0" && c <= "9") { sb.append(s.charAt(i)); if (i == s.length() - 1) { list.add(Integer.parseInt(sb.toString())); sb.setLength(0); } isChar = false; } else { if (sb.length() > 0 && isChar == false) { list.add(Integer.parseInt(sb.toString())); sb.setLength(0); } isChar = true; } } System.out.println(list.size()); } }
如果要是換個問法也是一樣的,統(tǒng)計一個字符串中出現整數的和,只需要在下面加入一個遍歷list,把所有的數字加一起就好了。
if (list.size() > 0) { int sum = 0; for (int i = 0; i < list.size(); i++) { sum = sum + list.get(i); } System.out.println(sum); }
持續(xù)更新……
微信公眾號:志哥 (ID: zhige-me)
期待與你相遇,一同成長前行!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/65191.html
摘要:排序算法和集合工具類排序算法和集合工具類。面試官總是問排序算法也不是在難為你,而是在考察你的編程功底。你首先要理解多線程不僅僅是和那么簡單,整個并發(fā)包下面的工具都是在為多線程服務。 去年的這個時候樓主通過兩個月的復習拿到了阿里巴巴的 offer,有一些運氣,也有一些心得,借著跳槽季來臨特此分享出來。簡單梳理一下我的復習思路,同時也希望和大家一起交流討論,一起學習,如果不對之處歡迎指正一...
摘要:選擇排序算法實現實現選擇排序,記錄最小元素的索引,最后才交換位置說明交換兩個數組中的元素,在中有更簡單的寫法,這是的語法糖,其它語言中是沒有的。和語言中比較器的實現前面我們說到了,我們?yōu)榱送怀雠判蛩惴ǖ乃枷耄瑢⑺械睦觾H限在數組排序中。 showImg(https://segmentfault.com/img/remote/1460000017909538?w=1949&h=1080...
閱讀 2139·2023-04-25 14:56
閱讀 2469·2021-11-16 11:44
閱讀 2706·2021-09-22 15:00
閱讀 1909·2019-08-29 16:55
閱讀 2188·2019-08-29 14:04
閱讀 2313·2019-08-29 11:23
閱讀 3687·2019-08-26 10:46
閱讀 1917·2019-08-22 18:43