国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用Java實(shí)現(xiàn)一些簡(jiǎn)單算法

Developer / 620人閱讀

摘要:依次類推選擇排序基本思路把第一個(gè)元素依次和后面的所有元素進(jìn)行比較。方法一定義計(jì)數(shù)器定義變量記錄出現(xiàn)的位置方法二兩個(gè)字符串中最大相同的子串。在一個(gè)字符串中,統(tǒng)計(jì)出現(xiàn)的整數(shù)的個(gè)數(shù),連續(xù)的數(shù)字為一個(gè)整數(shù)不考慮負(fù)數(shù),字符串中不包含空格。

for循環(huán),外循環(huán)控制的是行數(shù),內(nèi)循環(huán)控制的是每一行的個(gè)數(shù)。

*****
*****
*****
*****

for (int x = 0; x < 4; x++){// 外循環(huán)控制的是行數(shù)
    for (int y = 0; y < 5; y++){// 內(nèi)循環(huán)控制的是每一行的個(gè)數(shù)
        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();
}
整型數(shù)組

遍歷數(shù)組的功能

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;
    }

--------------------------------------------------

反轉(zhuǎn)

    public static void reverseArray(int[] arr) {
        for (int start = 0, end = arr.length - 1; start < end; start++, end--) {
            swap(arr, start, end);
        }
    }

--------------------------------------------------

冒泡排序

基本思路:相鄰元素兩兩比較,大的往后放,第一次完畢,最大值出現(xiàn)在了最大索引處。依次類推

    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);
                }
            }
        }
    }

--------------------------------------------------

選擇排序

基本思路:?把第一個(gè)元素依次和后面的所有元素進(jìn)行比較。?第一次結(jié)束后,就會(huì)有最小值出現(xiàn)在最面。依次類推

    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);
            }
        }
    }

--------------------------------------------------

二分查找(折半查找),數(shù)組必須有序

    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,數(shù)組必須有序

    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;

    }
字符串

字符串?dāng)?shù)組置換

    private static void swap(String[] arr, int a, int b) {
        String temp = arr[a];
        arr[a] = arr[b];
        arr[b] = temp;
    }

給定一個(gè)字符串?dāng)?shù)組。按照字典順序進(jìn)行從小到大的排序。

    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);
                }
            }
        }
    }

--------------------------------------------------

一個(gè)子串在整串中出現(xiàn)的次數(shù)。

//"nbaernbatynbauinbaopnba"     “nba"
/* 思路:
* 1,要找的子串是否存在,如果存在獲取其出現(xiàn)的位置。這個(gè)可以使用indexOf完成。
* 2,如果找到了,那么就記錄出現(xiàn)的位置并在剩余的字符串中繼續(xù)查找該子串,
* 而剩余字符串的起始位是出現(xiàn)位置+子串的長(zhǎng)度.
* 3,以此類推,通過循環(huán)完成查找,如果找不到就是-1,并對(duì)每次找到用計(jì)數(shù)器記錄。
*/

//方法一
    public static int getKeyStringCount(String str, String key) {
        // 定義計(jì)數(shù)器
        int count = 0;
        // 定義變量記錄key出現(xiàn)的位置
        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;
    }

--------------------------------------------------

兩個(gè)字符串中最大相同的子串。

/* "qwerabcdtyuiop" "xcabcdvbn"
* 思路: 1,既然取得是最大子串,先看短的那個(gè)字符串是否在長(zhǎng)的那個(gè)字符串中。 如果存在,短的那個(gè)字符串就是最大子串。
* 2,如果不是呢,那么就將短的那個(gè)子串進(jìn)行長(zhǎng)度遞減的方式去子串,去長(zhǎng)串中判斷是否存在。 如果存在就已找到,就不用在找了。
*/
    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;
    }

--------------------------------------------------

在一個(gè)字符串中,統(tǒng)計(jì)出現(xiàn)的整數(shù)的個(gè)數(shù),連續(xù)的數(shù)字為一個(gè)整數(shù)(不考慮負(fù)數(shù)),字符串中不包含空格。

/**
* a10b20c30de40fg
* 思路:首先要遍歷所有的字符,判斷每個(gè)字符是不是數(shù)字,是數(shù)字的話就把它放在一個(gè)StringBuilder對(duì)象
* 里面并標(biāo)記,下面一個(gè)字符要是數(shù)字就加在后面,不是數(shù)字的話,就把當(dāng)前的StringBuilder里面的數(shù)字
* 塞到list里面,最后判斷l(xiāng)ist長(zhǎng)度即可
*/

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 list = 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());        
    }
}

如果要是換個(gè)問法也是一樣的,統(tǒng)計(jì)一個(gè)字符串中出現(xiàn)整數(shù)的和,只需要在下面加入一個(gè)遍歷list,把所有的數(shù)字加一起就好了。

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ù)更新……

微信公眾號(hào):志哥 (ID: zhige-me)
期待與你相遇,一同成長(zhǎng)前行!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/65191.html

相關(guān)文章

  • 跳槽季如何快速全面復(fù)習(xí)面試題

    摘要:排序算法和集合工具類排序算法和集合工具類。面試官總是問排序算法也不是在難為你,而是在考察你的編程功底。你首先要理解多線程不僅僅是和那么簡(jiǎn)單,整個(gè)并發(fā)包下面的工具都是在為多線程服務(wù)。 去年的這個(gè)時(shí)候樓主通過兩個(gè)月的復(fù)習(xí)拿到了阿里巴巴的 offer,有一些運(yùn)氣,也有一些心得,借著跳槽季來臨特此分享出來。簡(jiǎn)單梳理一下我的復(fù)習(xí)思路,同時(shí)也希望和大家一起交流討論,一起學(xué)習(xí),如果不對(duì)之處歡迎指正一...

    keke 評(píng)論0 收藏0
  • 算法日積月累】1-選擇排序

    摘要:選擇排序算法實(shí)現(xiàn)實(shí)現(xiàn)選擇排序,記錄最小元素的索引,最后才交換位置說明交換兩個(gè)數(shù)組中的元素,在中有更簡(jiǎn)單的寫法,這是的語(yǔ)法糖,其它語(yǔ)言中是沒有的。和語(yǔ)言中比較器的實(shí)現(xiàn)前面我們說到了,我們?yōu)榱送怀雠判蛩惴ǖ乃枷耄瑢⑺械睦觾H限在數(shù)組排序中。 showImg(https://segmentfault.com/img/remote/1460000017909538?w=1949&h=1080...

    neuSnail 評(píng)論0 收藏0
  • 循序漸進(jìn)學(xué)加密

    摘要:在古典加密算法當(dāng)中,加密算法和密鑰都是不能公開的,一旦泄露就有被破解的風(fēng)險(xiǎn),我們可以用詞頻推算等方法獲知明文。年美國(guó)公司研制的算法是人類歷史上第一個(gè)公開加密算法但不公開密鑰的加密方法,后來成為美國(guó)軍方和政府機(jī)構(gòu)的標(biāo)準(zhǔn)加密算法。 還記得上初二的那年夏天,班里來了一個(gè)新同學(xué),他就住在我家對(duì)面的樓里,于是我們一起上學(xué)放學(xué),很快便成了最要好的朋友。我們決定發(fā)明一套神秘的溝通方式,任何人看到都不...

    Y3G 評(píng)論0 收藏0
  • 循序漸進(jìn)學(xué)加密

    摘要:在古典加密算法當(dāng)中,加密算法和密鑰都是不能公開的,一旦泄露就有被破解的風(fēng)險(xiǎn),我們可以用詞頻推算等方法獲知明文。年美國(guó)公司研制的算法是人類歷史上第一個(gè)公開加密算法但不公開密鑰的加密方法,后來成為美國(guó)軍方和政府機(jī)構(gòu)的標(biāo)準(zhǔn)加密算法。 還記得上初二的那年夏天,班里來了一個(gè)新同學(xué),他就住在我家對(duì)面的樓里,于是我們一起上學(xué)放學(xué),很快便成了最要好的朋友。我們決定發(fā)明一套神秘的溝通方式,任何人看到都不...

    fsmStudy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<