我想测试输入字符串是否平衡.如果存在匹配的开括号,括号或括号,则会平衡.
example:
{} balanced
() balanced
[] balanced
If S is balanced so is (S)
If S and T are balanced so is ST
public static boolean isBalanced(String in)
{
Stack st = new Stack();
for(char chr : in.toCharArray())
{
if(chr == '{')
st.push(chr);
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我在选择做什么时遇到了问题.我应该将每个开口或右括号,括号或括号放入堆叠中然后将它们弹出?如果我把它们弹出来,这对我有什么帮助?
MonoBehavior[] list; // This is from Unity3d but think of it as Object,
// all classes inherit from it.
Run Code Online (Sandbox Code Playgroud)
列表中包含许多内容,其中一些是Alpha,来自Alpha类,其他来自其他类.
foreach(Alpha a in list) // Alpha is a script.
a.doSomething();
Run Code Online (Sandbox Code Playgroud)
我假设我的foreach会以这种方式工作:在列表中找到的Foreach Alpha脚本做了一些事情,忽略了所有其他组件.
我认为这是一个铸造问题.请帮助我更好地理解cast/polymorphism.
我在执行期间遇到此错误: 无法从源类型转换为目标类型
我有一个字符串结构.
struct string
{
char *c;
int length;
int maxLength;
}
Run Code Online (Sandbox Code Playgroud)
我想检查两个字符串是否相等.
所以我想运行一个for循环.
for(int i = 0; i < length; i++)
if(s1[i] != s2[i]) // This code is more C# than C.
Run Code Online (Sandbox Code Playgroud)
s1和s2都是字符串结构.
我该怎么办if(s1[i] != s2[i])?
编辑: 我刚刚做了这个,是不是杀了?
for(i = 0; i < length; i++)
if((*s1).c[i] != (*s2).c[i])
{
printf("Failed");
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我想找到二叉树中最长的路径.我计划将它们添加到列表中,这样我就能告诉我的敌人角色在简易模式上走很长的路.
private static <T> ArrayList<T> depthFirstSearch(BinaryNode<T> node)
{
if(node != null)
{
Stack<BinaryNode<T>> stack = new Stack<BinaryNode<T>>();
stack.push(node);
while(!stack.isEmpty())
{
BinaryNode<T> currentNode = stack.pop();
if(currentNode.right != null)
stack.push(currentNode.right);
// We want to visit left child first, so push left node last.
if(currentNode.left != null)
stack.push(currentNode.left);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我写了那段代码,但这是一团糟.我正在尝试使用DFS找到最长的路径.有什么建议?
编辑:我确实有树的高度,我可以使用它.
public static <T> int height(BinaryNode<T> t)
{
if (t == null)
return -1;
else
return 1 + Math.max(height(t.left), height(t.right));
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:我何时知道我找到了使用DFS的最长路径,以便我可以将节点添加到我的列表中?
我以为我理解fstat,我错了.
我需要知道文件的大小,然后从文件中读取.
fileN 具有文件的路径和文件的名称.看起来像这样.0.txt
struct stat fileStat;
FILE *fp;
int fd = 0;
int i;
for(i = 0; i < 100; i++)
{
fp = fopen(fileN, "r");
fd = open(fileN, "r"); // I think this is eating my files and making them 0 size.
fstat(fd, $fileStat);
printf("%d", fileStat.st_size);
fclose(fp);
}
Run Code Online (Sandbox Code Playgroud)
为什么我需要使用fd = open(fileN, "r");使用fstat?感觉就像我打开文件两次.
如果fileStat是一个结构,为什么我使用fileStat.st_size而不是fileStat->st_size像我创建自己的结构时那样?示例:myString->characters;
为什么上面的代码在printf执行时会打印0 ?是的,文件的大小大于0,我有正确的文件名和路径.
上面的所有代码都是我对Googled代码的解释,并与我的试错实现混合在一起.这就是我有这么多问题的原因.
编辑:解决方案:open()被调用错误并影响文件.
我从用户那里得到命令行参数.
然后,我为命令切换案例,例如:
case 'f':
*file_name = optarg;
break;
Run Code Online (Sandbox Code Playgroud)
我不确定我是否需要malloc作为指针,因为我不完全理解optarg.
这是file_name的声明方式:
char **file_name;
Run Code Online (Sandbox Code Playgroud)
我应该这样做
int length = strlen(optarg); // This gives a warning about types when compiling.
Run Code Online (Sandbox Code Playgroud)
然后malloc为字符串长度+ 1?
如何针对这类问题完成malloc?请记住,用户输入的文件名为**argv.
编辑:这就是我调用此函数并仍然出现分段错误的方式.
int main(int argc, char **argv)
{
char **file_name;
parser(argc, argvm file_name);
}
void parser(int argc, char **argv, char **file_name)
{
// Switch cases.
}
Run Code Online (Sandbox Code Playgroud) 我试图比较这两个函数,看看哪个算法最好.我一直在关注n复杂度的顺序,虽然我不知道如何以数学方式得出它(这是一种耻辱)但我有时会猜测它的顺序.我想要知道算法是否比另一个好,我需要从渐近时间,复杂性和实验方面来看待它们.
let flatten1 xs = List.fold (@) [] xs
let flatten2 xs = List.foldBack (@) xs []
Run Code Online (Sandbox Code Playgroud)
我使用了F##time功能,这就是我得到的.
Real: 00:00:00.001, CPU: 00:00:00.000, GC gen0: 0, gen1: 0, gen2: 0
val it : int list =
[1; 2; 3; 5; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19;
20; 5; 4; 5; 6]
>
Real: 00:00:00.001, CPU: 00:00:00.000, GC gen0: 0, gen1: 0, gen2: 0
val it : int …Run Code Online (Sandbox Code Playgroud) 我想创建n个线程.然后传递一个结构,每个结构用数据填充该结构; 例如bool来跟踪线程是否已完成或是否已终止信号.
n = 5; // For testing.
pthread_t threads[n];
for(i=0; i<n; i++)
pthread_create(&threads[i], &thread_structs[i], &functionX);
Run Code Online (Sandbox Code Playgroud)
假设thread_structs已被malloced.
functionX()通知功能内部没有参数.我应该为结构创建一个参数吗?或者我传递结构的地方还可以吗?
我如何指向刚刚传递给函数的结构?
我通常使自己成为一个结构,并为结构分配内存,有时为结构内的缓冲区分配内存.像这样:
typedef struct A
{
char *buffer;
int size;
} A;
Run Code Online (Sandbox Code Playgroud)
然后当我malloc为结构时,我这样做.(我学会了不要在这里施放malloc返回.)
X
A *a = malloc(sizeof(a));
a->buffer = malloc(10*sizeof(a->buffer));
Run Code Online (Sandbox Code Playgroud)
X和Y有什么区别?
ÿ
A *a = malloc(sizeof(*a));
a->buffer = malloc(10*sizeof(a->buffer));
Run Code Online (Sandbox Code Playgroud)
他们似乎在做同样的事情.