Nurture the Passion
Schedule time for romance and spontaneity. He can plan a steady
//
/// 获取一个字符串中的数字
///
/// 字符串
/// 数字
private static decimal GetNumber(string str)
{
decimal result = 0;
if (str != null && str != string.Empty)
{
// 正则表达式剔除非数字字符(不包含小数点.)
str = Regex.Replace(str, @"[^\d.\d]", "");
// 如果是数字,则转换为decimal类型
if (Regex.IsMatch(str, @"^[+-]?\d*[.]?\d*$"))
{
result = decimal.Parse(str);
}
}
return result;
} #include
#include
int main()
{
char s[1000];
int i, j, k, count = 0, n;
gets(s);
for (i = 0; s[i]; i++)
if ((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z'))
s[i] = 1;
else
s[i] = 0;
n = strlen(s);
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
if (s[i] + s[j] == 1)
{
count++;
for (k = i; k < n - 1; k++)
s[k] = s[k + 1];
for (k = j - 1; k < n - 1; k++)
s[k] = s[k + 1];
n = n - 2;
i = -1;
break;
}
printf("%d\n", count);
return 0;
} #include
#include
int main()
{
char s[1000];
int i, j, k, count = 0, n;
gets(s);
for (i = 0; s[i]; i++)
if ((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z'))
s[i] = 1;
else
s[i] = 0;
n = strlen(s);
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
if (s[i] + s[j] == 1)
{
count++;
for (k = i; k < n - 1; k++)
s[k] = s[k + 1];
for (k = j - 1; k < n - 1; k++)
s[k] = s[k + 1];
n = n - 2;
i = -1;
break;
}
printf("%d\n", count);
return 0;
} #include
#include
int main()
{
char s[1000];
int i, j, k, count = 0, n;
gets(s);
for (i = 0; s[i]; i++)
if ((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z'))
s[i] = 1;
else
s[i] = 0;
n = strlen(s);
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
if (s[i] + s[j] == 1)
{
count++;
for (k = i; k < n - 1; k++)
s[k] = s[k + 1];
for (k = j - 1; k < n - 1; k++)
s[k] = s[k + 1];
n = n - 2;
i = -1;
break;
}
printf("%d\n", count);
return 0;
} import collections
s = "I am a student"
counter = collections.Counter(s)
print(counter)
#include
#include
int main()
{
char s[1000];
int i, j, k, count = 0, n;
gets(s);
for (i = 0; s[i]; i++)
if ((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z'))
s[i] = 1;
else
s[i] = 0;
n = strlen(s);
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
if (s[i] + s[j] == 1)
{
count++;
for (k = i; k < n - 1; k++)
s[k] = s[k + 1];
for (k = j - 1; k < n - 1; k++)
s[k] = s[k + 1];
n = n - 2;
i = -1;
break;
}
printf("%d\n", count);
return 0;
} #include
#include
int main()
{
char s[1000];
int i, j, k, count = 0, n;
gets(s);
for (i = 0; s[i]; i++)
if ((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z'))
s[i] = 1;
else
s[i] = 0;
n = strlen(s);
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
if (s[i] + s[j] == 1)
{
count++;
for (k = i; k < n - 1; k++)
s[k] = s[k + 1];
for (k = j - 1; k < n - 1; k++)
s[k] = s[k + 1];
n = n - 2;
i = -1;
break;
}
printf("%d\n", count);
return 0;
} #include
#include
int main()
{
char s[1000];
int i, j, k, count = 0, n;
gets(s);
for (i = 0; s[i]; i++)
if ((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z'))
s[i] = 1;
else
s[i] = 0;
n = strlen(s);
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
if (s[i] + s[j] == 1)
{
count++;
for (k = i; k < n - 1; k++)
s[k] = s[k + 1];
for (k = j - 1; k < n - 1; k++)
s[k] = s[k + 1];
n = n - 2;
i = -1;
break;
}
printf("%d\n", count);
return 0;
} 输入:
[[1,1,0],
[1,1,0],
[0,0,1]]
输出:2
说明:已知学生0和学生1互为朋友,他们在一个朋友圈。
第2个学生自己在一个朋友圈。所以返回2。package com.example.leetcode;
import java.util.Arrays;
/**
* @description: 130. 被围绕的区域
* 给你一个 m x n 的矩阵 board ,由若干字符 'X' 和 'O' ,找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。
*
*
* 示例 1:
*
*
* 输入:board = [["X","X","X","X"],["X","O","O","X"],["X","X","O","X"],["X","O","X","X"]]
* 输出:[["X","X","X","X"],["X","X","X","X"],["X","X","X","X"],["X","O","X","X"]]
* 解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 'O' 都不会被填充为 'X'。 任何不在边界上,或不与边界上的 'O' 相连的 'O' 最终都会被填充为 'X'。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。
* 示例 2:
*
* 输入:board = [["X"]]
* 输出:[["X"]]
*
*
* 提示:
*
* m == board.length
* n == board[i].length
* 1 <= m, n <= 200
* board[i][j] 为 'X' 或 'O'
* @author: licm
* @create: 2021-05-10 10:01
**/
public class Lc130_被围绕的区域 {
public static void solve(char[][] board) {
int m = board.length;
int n = board[0].length;
boolean[][] visited = new boolean[m][n];
/**
* 从边界开始标记,边界相连的O 不能被填充
*/
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
//从边界开始
boolean isEdge = i == 0 || j == 0 || i == m - 1 || j == n - 1;
if (isEdge && board[i][j] == 'O') {
mark(board, i, j, visited, m, n);
}
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (board[i][j] == 'O') {
board[i][j] = 'X';
}
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (board[i][j] == 'A') {
board[i][j] = 'O';
}
}
}
}
static int[] dx = {0, 1, 0, -1};
static int[] dy = {1, 0, -1, 0};
static void mark(char[][] board, int x, int y, boolean[][] visited, int m, int n) {
if (x < 0 || x >= m || y < 0 || y >= n || visited[x][y] || board[x][y] == 'X') {
return;
}
visited[x][y] = true;
board[x][y] = 'A';
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
mark(board, nx, ny, visited, m, n);
}
}
public static void main(String[] args) {
char[][] board = {
{'O', 'O'},
{'O', 'O'}
};
solve(board);
for (int i = 0; i < board.length; i++) {
System.out.println(Arrays.toString(board[i]));
}
}
}
class Solution {
public:
int father[210];
int m,n;
int find(int x){
if(x==father[x]) return x;
return father[x]=find(father[x]);
}
void join(int x,int y){
int fx=find(x);
int fy=find(y);
if(fx==fy) return ;
father[fx]=fy;
}
int numIslands(vector>& grid) {
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
m=grid.size();
if(m==0) return 0;
n=grid[0].size();
for(int i=0;i=0 && nx=0 && ny father;
UnionFind(int num) {
for (int i = 0; i < num; i++) {
father.push_back(i);
}
}
int Find(int n) {
if (father[n] == n) return n;
father[n] = Find(father[n]);
return father[n];
}
void Union(int a, int b) {
int fa = Find(a);
int fb = Find(b);
father[fb] = fa;
}
};
class Solution {
public:
int numIslands(vector>& grid) {
int m = grid.size();
if (m == 0) return 0;
int n = grid[0].size();
UnionFind UF(m * n);
int cnt = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (grid[i][j] == '1') {
cnt++;
}
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (grid[i][j] == '1') {
if (i > 0 && grid[i - 1][j] == '1') {
if (UF.Find(i * n + j) != UF.Find((i - 1) * n + j)) {
UF.Union(i * n + j, (i - 1) * n + j);
cnt--;
}
}
if (j > 0 && grid[i][j - 1] == '1') {
if (UF.Find(i * n + j) != UF.Find(i * n + j - 1)) {
UF.Union(i * n + j, i * n + j - 1);
cnt--;
}
}
}
}
}
return cnt;
}
}; #include
#include
#include
using //
/// 获取一个字符串中的数字
///
/// 字符串
/// 数字
private static decimal GetNumber(string str)
{
decimal result = 0;
if (str != null && str != string.Empty)
{
// 正则表达式剔除非数字字符(不包含小数点.)
str = Regex.Replace(str, @"[^\d.\d]", "");
// 如果是数字,则转换为decimal类型
if (Regex.IsMatch(str, @"^[+-]?\d*[.]?\d*$"))
{
result = decimal.Parse(str);
}
}
return result;
} #include
#include
int main()
{
char s[1000];
int i, j, k, count = 0, n;
gets(s);
for (i = 0; s[i]; i++)
if ((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z'))
s[i] = 1;
else
s[i] = 0;
n = strlen(s);
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
if (s[i] + s[j] == 1)
{
count++;
for (k = i; k < n - 1; k++)
s[k] = s[k + 1];
for (k = j - 1; k < n - 1; k++)
s[k] = s[k + 1];
n = n - 2;
i = -1;
break;
}
printf("%d\n", count);
return 0;
} class Solution:
def solve(self, grid: List[List[str]]) -> None:
if not grid:
return
m = len(grid)
n = len(grid[0])
from collections import deque
que = deque()
# 加入边缘的O
for i in range(m):
if grid[i][0] == 'O':
que.append((i, 0))
grid[i][0] = 'A'
if grid[i][n - 1] == 'O':
que.append((i, n - 1))
grid[i][n - 1] = 'A'
for j in range(n):
if grid[0][j] == 'O':
que.append((0, j))
grid[0][j] = 'A'
if grid[m - 1][j] == 'O':
que.append((m - 1, j))
grid[m - 1][j] = 'A'
# BFS
while que:
x, y = que.popleft()
for mx, my in [(x - 1, y), (x + 1, y), (x, y - 1), (x, y + 1)]:
if 0 <= mx < m and 0 <= my < n and grid[mx][my] == 'O':
que.append((mx, my))
grid[mx][my] = 'A'
# 遍历更新
for i in range(m):
for j in range(n):
if grid[i][j] == 'A':
grid[i][j] = 'O'
elif grid[i][j] == 'O':
grid[i][j] = 'X'
class Solution:
def solve(self, grid: List[List[str]]) -> None:
if not grid:
return
m = len(grid)
n = len(grid[0])
from collections import deque
que = deque()
# 加入边缘的O
for i in range(m):
if grid[i][0] == 'O':
que.append((i, 0))
grid[i][0] = 'A'
if grid[i][n - 1] == 'O':
que.append((i, n - 1))
grid[i][n - 1] = 'A'
for j in range(n):
if grid[0][j] == 'O':
que.append((0, j))
grid[0][j] = 'A'
if grid[m - 1][j] == 'O':
que.append((m - 1, j))
grid[m - 1][j] = 'A'
# BFS
while que:
x, y = que.popleft()
for mx, my in [(x - 1, y), (x + 1, y), (x, y - 1), (x, y + 1)]:
if 0 <= mx < m and 0 <= my < n and grid[mx][my] == 'O':
que.append((mx, my))
grid[mx][my] = 'A'
# 遍历更新
for i in range(m):
for j in range(n):
if grid[i][j] == 'A':
grid[i][j] = 'O'
elif grid[i][j] == 'O':
grid[i][j] = 'X'