广州最大网站建设/中国新闻发布
1、字符串中第一个唯一字符
//给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 // // // // 示例: // // s = "leetcode" //返回 0 // //s = "loveleetcode" //返回 2 // // // // // 提示:你可以假定该字符串只包含小写字母。 // Related Topics 哈希表 字符串
public int firstUniqChar(String s) {int[] nums = new int[26];for (int i = 0; i < s.length(); i++) {nums[s.charAt(i)-'a']++;}for (int i = 0; i < s.length(); i++) {if(nums[s.charAt(i)-'a'] == 1){return i;}}return -1;}
2、最长回文串
//给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 // // 在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。 // // 注意: //假设字符串的长度不会超过 1010。 // // 示例 1: // // //输入: //"abccccdd" // //输出: //7 // //解释: //我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。 // // Related Topics 哈希表
最长回文串是只能有一类奇数个数的字符串,其他必须都是偶数,要不就没有奇数个数的字符串
public int longestPalindrome(String s) {int[] arr = new int[52];for (int i = 0; i < s.length(); i++) {if('A'<=s.charAt(i) && 'Z'>=s.charAt(i)){arr[s.charAt(i)-'A']++;}else{arr[s.charAt(i)-'G']++;}}int length = 0;int count = 0;for (int i = 0; i < arr.length; i++) {if(arr[i] % 2 == 0){length += arr[i];}else{length = length + arr[i] - 1;count = 1;}}return length+count;}
3、岛屿的周长
//给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] = 1 表示陆地, grid[i][j] = 0 表示水域。 // // 网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。 // // 岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿 //的周长。 // // // // 示例 1: // // // // //输入:grid = [[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0]] //输出:16 //解释:它的周长是上面图片中的 16 个黄色的边 // // 示例 2: // // //输入:grid = [[1]] //输出:4 // // // 示例 3: // // //输入:grid = [[1,0]] //输出:4 // // // // // 提示: // // // row == grid.length // col == grid[i].length // 1 <= row, col <= 100 // grid[i][j] 为 0 或 1 // // Related Topics 哈希表
直接找到一块陆地,然后看它的前后左右,如果遇到海或者遇到边那么周长就+1。
class Solution {int[] dx = {0, 1, 0, -1};int[] dy = {1, 0, -1, 0};public int islandPerimeter(int[][] grid) {int n = grid.length, m = grid[0].length;int ans = 0;for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {if (grid[i][j] == 1) {int cnt = 0;for (int k = 0; k < 4; ++k) {int tx = i + dx[k];int ty = j + dy[k];if (tx < 0 || tx >= n || ty < 0 || ty >= m || grid[tx][ty] == 0) {cnt += 1;}}ans += cnt;}}}return ans;}
}