我遇到了如何从字符行中获取形状的问题,例如给出了这样的输入:
AAAAAAAA
ABBBAABA
ABABABBB
ABBBAAAA
AAAABBAA
ABBABBAA
ABBABBAA
ABAABBAA
任务: 计算水平或垂直相邻的'B'字母形成的形状数量。 在这个例子中有4个这样的形状。 可能更容易看出我是否删除了'A':
BBB B
B B BBB
BBB
BB
BB BB
BB BB
B BB
附加任务: 每个形状中有多少'B'字符? 在此示例中:8,4,5,8(不按任何特定顺序)。
我还是Java的新手,所以我想问一下,是否有任何java函数可以检查相同的事件,以便计算出来的形状?希望你能给我一些关于如何构造这个算法的指针。 (我已经考虑过采用'B'的每个指数并检查它们是否接近其他'B'但我被卡住了)
答案 0 :(得分:1)
我还是Java的新手,所以我想问一下,是否有任何java函数可以检查相同的事件,以便计算出形状?
不,没有内置功能可以让这很容易。 这就是演习的重点。
以下是一些可用于解决此问题的示例方法:
boolean[][]
,您可以在其中设置true
,其中输入为B
。false
值。true
值时,请启动洪水填充:
true
递归替换所有相邻的false
值,随时增加shapeSize
次数true
邻居(以及邻居的邻居等)被false
替换时,形状将被充分探索true
值B
对创建连接
componentSize
计数去答案 1 :(得分:0)
int indexCount = 0;
ArrayList<Integer> list = new ArrayList<Integer>();
for(int a = 0; a < count; a++) {
indexCount = array[a].indexOf('B');
list.add(indexCount);
}
System.out.println(list);
答案 2 :(得分:0)
方法ActiveXXX
返回String中的apearing字符的第一个索引。你应该在获得第一个B的索引后剪切每个字符串。
或者您可以使用Option Explicit
Sub HandleRowsColorAndVisibility()
Dim iRow As Long
With Range("A8", Cells(Rows.count, 1).End(xlUp)) '<--| reference cells from A8 down to column A last not empty cell
ResetRange .Cells '<--| first, bring range formatting and visibility back to a "default" state
For iRow = .Rows.count To 1 Step -1 '<--| then start looping through range
If WorksheetFunction.CountIf(Range("Name_Preps"), .Cells(iRow, 1)) = 1 Then '<-- if current cell matches your criteria ...
FormatRange .Cells(iRow, 1), True, False, 0, xlColorIndexAutomatic, xlThemeColorAccent3, 0.4 '<--| then format it
Else '<--| otherwise...
.Rows(iRow).Hidden = True '<--| hide it!
End If
Next
End With
End Sub
Sub ResetRange(rng As Range)
rng.EntireRow.Hidden = False
FormatRange rng, False, False, 0, xlColorIndexAutomatic, -4142, 0
End Sub
Sub FormatRange(rng As Range, okBold As Boolean, okItalic As Boolean, myFontTintAndShade As Single, myPatternColorIndex As XlColorIndex, myInteriorThemeColor As Variant, myInteriorTintAndShade As Single)
With rng
With .Font
.Bold = okBold
.Italic = okItalic
.TintAndShade = myFontTintAndShade
End With
With .Interior
.PatternColorIndex = myPatternColorIndex
.ThemeColor = myInteriorThemeColor
.TintAndShade = myInteriorTintAndShade
End With
End With
End Sub
返回指定字符第一次出现的字符串中的索引,从指定索引处开始搜索。