Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 35 additions & 2 deletions problems/kamacoder/0054.替换数字.md
Original file line number Diff line number Diff line change
Expand Up @@ -362,10 +362,43 @@ main();

### Scala:


### PHP:

```php
<?php
// 标准输入
$s = trim(fgets(STDIN));
$oldLen = strlen($s);
$count = 0;
for ($i = 0; $i < $oldLen; $i++) {
if (is_numeric($s[$i])) {
$count++;
}
}

### Rust:
// 扩充字符串
$s = str_pad($s, $oldLen + $count * 5);
$newLen = strlen($s);
while($oldLen >= 0) {
if (is_numeric($s[$oldLen])) {
$s[$newLen--] = 'r';
$s[$newLen--] = 'e';
$s[$newLen--] = 'b';
$s[$newLen--] = 'm';
$s[$newLen--] = 'u';
$s[$newLen--] = 'n';
} else {
$s[$newLen--] = $s[$oldLen];
}
$oldLen--;
}

echo $s;
?>
```




### Rust:

29 changes: 27 additions & 2 deletions problems/kamacoder/0055.右旋字符串.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
```
2
abcdefg
```
```

样例输出:

Expand Down Expand Up @@ -355,10 +355,35 @@ function reverseStr(s, start, end) {

### PHP:

```php
<?php
// 反转函数
function reverse(&$s, $start, $end) {
for ($i = $start, $j = $end; $i < $j; $i++, $j--) {
$tmp = $s[$i];
$s[$i] = $s[$j];
$s[$j] = $tmp;
}
}

// 标准输入:读取右旋转位数和字符串
$n = trim(fgets(STDIN));
$s = trim(fgets(STDIN));
// 字符串长度
$len = strlen($s);
// 先部分反转
reverse($s, $len - $n, $len - 1);
reverse($s, 0, $len - $n - 1);
// 再整体反转
reverse($s, 0, $len - 1);

echo $s;
?>
```


### Scala:


### Rust:


51 changes: 50 additions & 1 deletion problems/kamacoder/0101.孤岛的总面积.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,56 @@ int main() {
### Java

### Python

```python
from collections import deque

# 处理输入
n, m = list(map(int, input().strip().split()))
g = []
for _ in range(n):
row = list(map(int, input().strip().split()))
g.append(row)

# 定义四个方向、孤岛面积(遍历完边缘后会被重置)
directions = [[0,1], [1,0], [-1,0], [0,-1]]
count = 0

# 广搜
def bfs(r, c):
global count
q = deque()
q.append((r, c))
g[r][c] = 0
count += 1

while q:
r, c = q.popleft()
for di in directions:
next_r = r + di[0]
next_c = c + di[1]
if next_c < 0 or next_c >= m or next_r < 0 or next_r >= n:
continue
if g[next_r][next_c] == 1:
q.append((next_r, next_c))
g[next_r][next_c] = 0
count += 1


for i in range(n):
if g[i][0] == 1: bfs(i, 0)
if g[i][m-1] == 1: bfs(i, m-1)

for i in range(m):
if g[0][i] == 1: bfs(0, i)
if g[n-1][i] == 1: bfs(n-1, i)

count = 0
for i in range(n):
for j in range(m):
if g[i][j] == 1: bfs(i, j)

print(count)
```
### Go

### Rust
Expand Down