版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41275621/article/details/82950190
挑战任务
给定一个渡口(二维的),请计算渡口中停了多少艘船。 船用 +
表示,空位用字母o
表示。 你需要遵守以下规则:
- 给你一个有效的渡口(二维数组),仅由船和空位组成。
- 船只能水平或者垂直放置。换句话说,船只能由
1
行,N
列组成,或者N
行,1
列组成,其中N
可以是任意大小。 - 两艘船之间至少有一个水平或垂直的空位分隔,即没有相邻的船。
补充完善右侧代码区中的countOfShips(char[][] ferry)
函数,实现根据输入的数组来判断船的数量,将船的数量作为返回值返回。
输入:3 4
+ + + +
o o o o
o o o o
输出:
1
输入:3 4
+ o o +
o o o +
o o o +
输出:
2
注意:右侧测试集中有输入参数传入,如:3 4
,这两个数字是后台构建渡口时传入的大小,不会作为函数countOfShips
的参数传入,可以忽略这两个数字的作用。
无效样例:
o o o +
+ + + +
o o o +
你不会收到这样的无效样例,因为船之间至少会有一个空位将它们分开。
开始挑战吧,祝你成功!
package step3;
public class Task {
public int countOfShips(char[][] ferry) {
int boat = 0;
/**************BEGIN************/
for(int i = 0 ; i < ferry.length;i++) {
for(int j = 0 ; j < ferry[i].length;j++) {
if(ferry[i][j] == '+') {
for(int k = i+1 ; k < ferry.length ; k++) {
if(ferry[k][j]=='o') {
break;
}else {
ferry[k][j]='o';//把查过的变为o
}
}
for(int k = j+1 ; k < ferry[i].length ; k++) {
j = k;
if(ferry[i][k]=='o') {
break;
}
}
boat++;
}
}
}
/***********END ***************/
return boat;
}
}