for循環,外循環控制的是行數,內循環控制的是每一行的個數。java
***** ***** ***** ***** for (int x = 0; x < 4; x++){// 外循環控制的是行數 for (int y = 0; y < 5; y++){// 內循環控制的是每一行的個數 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(); }
--------------------------------------------------app
54321
5432
543
54
5ui
for (int x = 1; x <= 5; x++) { for (int y = 5; y >= x; y--) { System.out.print(y); } System.out.println(); }
--------------------------------------------------code
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 + "\t"); } 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,若是找到了,那麼就記錄出現的位置並在剩餘的字符串中繼續查找該子串, * 而剩餘字符串的起始位是出現位置+子串的長度. * 3,以此類推,經過循環完成查找,若是找不到就是-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; }
--------------------------------------------------
在一個字符串中,統計出現的整數的個數,連續的數字爲一個整數(不考慮負數),字符串中不包含空格。
/** * a10b20c30de40fg * 思路:首先要遍歷全部的字符,判斷每一個字符是否是數字,是數字的話就把它放在一個StringBuilder對象 * 裏面並標記,下面一個字符要是數字就加在後面,不是數字的話,就把當前的StringBuilder裏面的數字 * 塞到list裏面,最後判斷list長度便可 */ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String s = scanner.next(); scanner.close(); if (s != null && s.length() != 0) { List<Integer> list = new ArrayList<Integer>(); 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()); } }
若是要是換個問法也是同樣的,統計一個字符串中出現整數的和,只須要在下面加入一個遍歷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); }
持續更新……
微信公衆號:志哥 (ID: zhige-me) 期待與你相遇,一同成長前行!