package?tool;
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供永安網(wǎng)站建設(shè)、永安做網(wǎng)站、永安網(wǎng)站設(shè)計(jì)、永安網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、永安企業(yè)網(wǎng)站模板建站服務(wù),10年永安做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
import?java.util.Scanner;
public?class?DogSuZu
{
public?static?void?main?(?String[]?args?)
{
Scanner?input?=?new?Scanner?(System.in);
StringBuilder?builder?=?new?StringBuilder?();
System.out.println?("輸入兩個(gè)單詞?,空格隔開");
while?(input.hasNextLine?())
{
String?line?=?input.nextLine?();
String?one?=?line.split?("\\s+")[0];
String?two?=?line.split?("\\s+")[1];
int?len?=?one.length?()??two.length?()???one.length?()?:?two.length?();
String?result?=?"";
one?=?builder.append?(one).reverse?().toString?();
for?(?int?i?=?0;?i??len;?i++?)
{
if?(one.charAt?(i)?==?two.charAt?(i))
{
result?+=?one.charAt?(i);
}
else
{
break;
}
}
if?("".equals?(result))
{
System.out.println?("接龍不成功");
}
else
{
System.out.println?(result);
}
}
}
}
package util;
import java.util.Random;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Random rnd=new Random();
Scanner in = new Scanner(System.in);
char c=0;
String yn = "";
do{
c=(char)('A'+rnd.nextInt(27)); //產(chǎn)生的是隨機(jī)字母
System.out.println("輸入C:"+c);
for (int i = 0; i 4; i++) {
System.out.println("請(qǐng)輸入一個(gè)大寫字母:");
String at = in.next();
System.out.println(at);
String a = String.valueOf(c);
if (a.equals(at)) {
System.out.println("恭喜你,猜對(duì)了!");
break;
}else {
System.out.println("你猜錯(cuò)了!");
}
}
System.out.println("是否繼續(xù):y/n");
yn = in.next().trim();
}while("y".equals(yn));
System.out.println("你結(jié)束了猜字母的游戲!");
}
}
//直接粘貼,復(fù)制,就能運(yùn)行。
先將單詞復(fù)制一份。拿你的例子說(shuō),5個(gè)單詞,由于每個(gè)可以出現(xiàn)兩次,那么最終就是10個(gè)單詞。
構(gòu)造圖結(jié)構(gòu),你把每個(gè)單詞當(dāng)成一個(gè)節(jié)點(diǎn),遍歷所有節(jié)點(diǎn),能收尾相連且不包含節(jié)點(diǎn)的就連一根線,做成一個(gè)有向圖。
遍歷整個(gè)圖,找到最長(zhǎng)的
由于你最多只有20個(gè)單詞,這種方法是絕對(duì)可行的,相當(dāng)于把所有可能的龍找出來(lái)并挑選最長(zhǎng)的。
算我無(wú)聊,寫了份代碼,你參考下吧,輸入輸出我沒怎么管哈
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class FindLongestDragon
{
public static void main(String args[])
{
? getLongestDragon('a', "at", "touch", "cheat", "choose", "tact");
}
public static void getLongestDragon(char startChar, String ... nodesStr)
{
? ListNode nodes = new ArrayListNode();
? for (String nodeStr : nodesStr)
? {
? ? ? nodes.add(new Node(nodeStr));
? ? ? nodes.add(new Node(nodeStr));
? }
? //遍歷所有節(jié)點(diǎn)關(guān)系,構(gòu)成圖
? for (Node node1 : nodes)
? {
? ? ? for (Node node2: nodes)
? ? ? {
? ? ? ? ? if (node1 != node2)
? ? ? ? ? {
? ? ? ? ? ? ? checkIsLink(node1, node2);
? ? ? ? ? }
? ? ? }
? }
? //遍歷
? for (Node node : getStartWithCharNodes(nodes, startChar))
? {
? ? ? Dragon dragon = new Dragon();
? ? ? dragon.append(node);
? ? ? dragon.findNextNode();
? }
? //輸出所有的龍
? Collections.sort(Dragon.dragons);
? for (Dragon dragon : Dragon.dragons)
? {
? ? ? System.out.println(dragon);
? }
}
//b是否能和a相連
public static void checkIsLink(Node a, Node b)
{
? String nameA = a.getName();
? String nameB = b.getName();
? //存在包含關(guān)系
? if (nameA.endsWith(nameB) || nameB.startsWith(nameA))
? {
? ? ? return;
? }
? if (getLinkStr(a, b) != null)
? {
? ? ? a.addChild(b);
? }
}
public static String getLinkStr(Node a, Node b)
{
? String nameA = a.getName();
? String nameB = b.getName();
? //從第二個(gè)字符開始檢查是否相連
? for (int i = 1, length = nameA.length(); i length; i++)
? {
? ? ? String linkStr = nameA.substring(i);
? ? ? if (nameB.startsWith(linkStr))
? ? ? {
? ? ? ? ? return linkStr;
? ? ? }
? }
? return null;
}
private static ListNode getStartWithCharNodes(ListNode list, char startChar)
{
? ListNode nodes = new ArrayListNode();
? int size = list.size();
? for (int i = 0; i size; i+=2)
? {
? ? ? Node node = list.get(i);
? ? ? if (node.getName().charAt(0) == startChar)
? ? ? {
? ? ? ? ? nodes.add(node);
? ? ? }
? }
? return nodes;
}
}
class Dragon implements ComparableDragon
{
private ListNode nodes = new ArrayListNode();
public static ListDragon dragons = new ArrayListDragon();
public void findNextNode()
{
? Node lastNode = nodes.get(nodes.size() - 1);
? boolean hasNextNode = false;
? for (Node nextNode : lastNode.getChildren())
? {
? ? ? if (!nodes.contains(nextNode))
? ? ? {
? ? ? ? ? hasNextNode = true;
? ? ? ? ? append(nextNode);
? ? ? ? ? findNextNode();
? ? ? ? ? removeTail();
? ? ? }
? }
? //找到了盡頭
? if (!hasNextNode)
? {
? ? ? Dragon copy = this.copy();
? ? ? if (!dragons.contains(copy))
? ? ? {
? ? ? ? ? dragons.add(copy);
? ? ? }
? }
}
private Dragon copy()
{
? Dragon dragon = new Dragon();
? for (Node node : this.nodes)
? ? ? dragon.append(node);
? return dragon;
}
public void append(Node node)
{
? nodes.add(node);
}
public void removeTail()
{
? nodes.remove(nodes.size() - 1);
}
public String toString()
{
? StringBuilder sb = new StringBuilder();
? //展示所有的節(jié)點(diǎn)
? String allNodeLinkStr = getAllNodeLinkStr();
? sb.append(allNodeLinkStr).append(" ");
? sb.append(allNodeLinkStr.length()).append(" ");
? for (Node node : nodes)
? {
? ? ? sb.append(node.getName()).append(" ");
? }
? return sb.toString();
}
@Override
public int compareTo(Dragon o)
{
? return o.getLength() - this.getLength();
}
public int getLength()
{
? return getAllNodeLinkStr().length();
}
public String getAllNodeLinkStr()
{
? StringBuilder sb = new StringBuilder();
? //展示所有的節(jié)點(diǎn)
? sb.append(nodes.get(0));
? for (int i = 1, length = nodes.size(); i length; i++)
? {
? ? ? Node node = nodes.get(i);
? ? ? sb.append(node.getName().substring(FindLongestDragon.getLinkStr(nodes.get(i - 1), node).length()));
? }
? return sb.toString();
}
public boolean equals(Object o)
{
? if (o instanceof Dragon)
? {
? ? ? Dragon d = (Dragon)o;
? ? ? if (d.nodes.size() == this.nodes.size())
? ? ? {
? ? ? ? ? int length = this.nodes.size();
? ? ? ? ? for (int i = 0; i length; i++)
? ? ? ? ? {
? ? ? ? ? ? ? if (!d.nodes.get(i).getName().equals(this.nodes.get(i).getName()))
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? return false;
? ? ? ? ? ? ? }
? ? ? ? ? }
? ? ? ? ? return true;
? ? ? }
? }
? return false;
}
}
class Node
{
private ListNode children = new ArrayListNode();
private String name;
public Node(String name)
{
? super();
? this.name = name;
}
public ListNode getChildren()
{
? return children;
}
public String getName()
{
? return name;
}
public void addChild(Node e)
{
? this.children.add(e);
}
public String toString()
{
? return this.getName();
}
}
這種情形大多是源文件里面還有其他類定義或者內(nèi)部類定義,然后編譯時(shí)會(huì)有xxx.class,xxx$1.class。其他情形暫未碰到。
分享文章:java代碼單詞接龍,單詞接龍?jiān)趺磳?/a>
本文地址:http://chinadenli.net/article10/hohdgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、定制開發(fā)、服務(wù)器托管、App開發(fā)、軟件開發(fā)、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)